From c01440a8e8ed435160a4f1159316aa240592abe5 Mon Sep 17 00:00:00 2001 From: Mark Suckerberg Date: Sat, 11 Apr 2020 02:32:50 -0500 Subject: [PATCH] TG Merge 5 (thermoelectric boogaloo) (#122) * Merge remote-tracking branch 'tg/master' # Conflicts: # README.md # _maps/map_files/BoxStation/BoxStation.dmm # _maps/map_files/Deltastation/DeltaStation2.dmm # _maps/map_files/Donutstation/Donutstation.dmm # _maps/map_files/KiloStation/KiloStation.dmm # _maps/map_files/MetaStation/MetaStation.dmm # _maps/map_files/PubbyStation/PubbyStation.dmm # code/__DEFINES/dcs/signals.dm # code/__DEFINES/jobs.dm # code/__DEFINES/misc.dm # code/__DEFINES/movespeed_modification.dm # code/__DEFINES/preferences.dm # code/_onclick/hud/_defines.dm # code/_onclick/hud/hud.dm # code/datums/components/edible.dm # code/datums/http.dm # code/datums/status_effects/buffs.dm # code/game/machinery/computer/arcade.dm # code/game/machinery/computer/card.dm # code/game/objects/items/melee/misc.dm # code/game/objects/items/stunbaton.dm # code/modules/atmospherics/machinery/pipes/mapping.dm # code/modules/client/preferences.dm # code/modules/clothing/clothing.dm # code/modules/clothing/spacesuits/miscellaneous.dm # code/modules/jobs/access.dm # code/modules/jobs/job_types/chief_medical_officer.dm # code/modules/mob/living/carbon/human/species_types/ethereal.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/living/simple_animal/friendly/drone/_drone.dm # code/modules/power/lighting.dm # code/modules/power/multiz.dm # code/modules/projectiles/guns/energy/energy_gun.dm # code/modules/projectiles/guns/energy/special.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/reagent_containers/syringes.dm # code/modules/research/designs/misc_designs.dm # code/modules/research/techweb/all_nodes.dm # code/modules/surgery/organs/liver.dm # code/modules/uplink/uplink_items.dm # html/changelogs/.all_changelog.yml # tgui/README.md # tgui/packages/tgui/public/tgui.bundle.js # tgui/packages/tgui/routes.js * dumb workflows * Revert "Merge pull request #49563 from Fikou/clarke" This reverts commit 9d4eb582ac3fb87b03ec5a349eacd7dc1cab8d3c. * readme fix * movement fixes * moar fixes * more fixes and things * whoops * hopefully final fix * map updates * box power fixes(?) * more map fixes/changes * minor fixes * final changes * actual real fixes * i'm so tired --- .github/AUTODOC_GUIDE.md | 2 +- .github/workflows/round_id_linker.yml | 12 + .vscode/settings.json | 2 +- Dockerfile | 2 +- README.md | 64 +- .../LavaRuins/lavaland_biodome_beach.dmm | 6 +- .../lavaland_surface_ash_walker1.dmm | 16 +- .../lavaland_surface_biodome_winter.dmm | 28 +- .../lavaland_surface_syndicate_base1.dmm | 10 +- _maps/RandomRuins/SpaceRuins/abandonedzoo.dmm | 1 + _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 1 + _maps/RandomRuins/SpaceRuins/crashedship.dmm | 1 + .../RandomRuins/SpaceRuins/forgottenship.dmm | 3448 + .../RandomRuins/SpaceRuins/gasthelizards.dmm | 1 + _maps/RandomRuins/SpaceRuins/hellfactory.dmm | 61 +- .../SpaceRuins/hilbertshoteltestingsite.dmm | 2 +- .../SpaceRuins/intactemptyship.dmm | 2 +- .../RandomRuins/SpaceRuins/kinggoatarena.dmm | 8 +- .../SpaceRuins/listeningstation.dmm | 2 +- .../SpaceRuins/mrow_thats_right.dmm | 6 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 20 +- _maps/RandomRuins/SpaceRuins/spacehotel.dmm | 22 +- _maps/RandomZLevels/Academy.dmm | 65 +- _maps/RandomZLevels/SnowCabin.dmm | 69 +- _maps/RandomZLevels/TheBeach.dmm | 94 +- _maps/RandomZLevels/caves.dmm | 82 +- _maps/RandomZLevels/challenge.dmm | 129 +- _maps/RandomZLevels/moonoutpost19.dmm | 116 +- _maps/RandomZLevels/research.dmm | 42 +- _maps/RandomZLevels/snowdin.dmm | 49 +- _maps/RandomZLevels/spacebattle.dmm | 66 +- _maps/RandomZLevels/undergroundoutpost45.dmm | 149 +- _maps/RandomZLevels/wildwest.dmm | 66 +- _maps/_basemap.dm | 1 + _maps/donutstation.json | 15 +- _maps/map_files/BoxStation/BoxStation.dmm | 57 +- _maps/map_files/BoxStation/job_changes.dm | 7 + .../map_files/Deltastation/DeltaStation2.dmm | 983 +- _maps/map_files/Donutstation/Donutstation.dmm | 294 +- .../Donutstation/Donutstation_LVL2.dmm | 86395 ++++++++++++++++ _maps/map_files/Donutstation/job_changes.dm | 7 + _maps/map_files/KiloStation/KiloStation.dmm | 505 +- _maps/map_files/MetaStation/MetaStation.dmm | 96 +- _maps/map_files/Mining/Lavaland.dmm | 10 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 376 +- _maps/map_files/debug/multiz.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 130 +- _maps/shuttles/arrival_delta.dmm | 8 +- _maps/shuttles/aux_base_default.dmm | 1 + _maps/shuttles/emergency_bar.dmm | 8 +- _maps/shuttles/emergency_birdboat.dmm | 4 +- _maps/shuttles/emergency_cere.dmm | 8 +- _maps/shuttles/emergency_delta.dmm | 12 +- .../emergency_imfedupwiththisworld.dmm | 4 +- _maps/shuttles/emergency_kilo.dmm | 14 +- _maps/shuttles/emergency_omega.dmm | 6 +- _maps/shuttles/emergency_pubby.dmm | 6 +- _maps/shuttles/emergency_scrapheap.dmm | 2 +- _maps/shuttles/emergency_zeta.dmm | 8 +- _maps/shuttles/ferry_lighthouse.dmm | 2 +- _maps/shuttles/hunter_bounty.dmm | 2 +- _maps/shuttles/whiteship_kilo.dmm | 2 +- _maps/templates/shelter_2.dmm | 2 +- _maps/templates/shelter_3.dmm | 2 +- code/__DEFINES/DNA.dm | 2 + code/__DEFINES/MC.dm | 7 +- code/__DEFINES/access.dm | 1 + code/__DEFINES/atmospherics.dm | 11 +- code/__DEFINES/atom_hud.dm | 3 + code/__DEFINES/dcs/signals.dm | 24 +- code/__DEFINES/flags.dm | 15 + code/__DEFINES/footsteps.dm | 9 + code/__DEFINES/jobs.dm | 61 +- code/__DEFINES/layers.dm | 35 +- code/__DEFINES/lighting.dm | 5 + code/__DEFINES/materials.dm | 2 + code/__DEFINES/misc.dm | 22 +- code/__DEFINES/mobs.dm | 6 + code/__DEFINES/movespeed_modification.dm | 77 +- code/__DEFINES/power.dm | 12 +- code/__DEFINES/preferences.dm | 15 +- code/__DEFINES/reactions.dm | 3 + code/__DEFINES/reagents.dm | 2 +- code/__DEFINES/role_preferences.dm | 6 +- code/__DEFINES/skills.dm | 4 +- code/__DEFINES/traits.dm | 21 + code/__DEFINES/vv.dm | 3 + code/__DEFINES/~wasp_defines/_defines.dm | 7 + code/__DEFINES/~wasp_defines/bone_flags.dm | 6 + code/__DEFINES/~wasp_defines/jobs.dm | 4 + .../machines.dm | 0 .../metacoin.dm | 0 .../~wasp_defines/movespeed_modification.dm | 1 + .../spacepods.dm | 0 code/__HELPERS/_lists.dm | 2 + code/__HELPERS/game.dm | 32 +- code/__HELPERS/unsorted.dm | 1 + code/_compile_options.dm | 4 +- code/_globalvars/bitfields.dm | 10 + code/_globalvars/configuration.dm | 2 +- code/_globalvars/lists/flavor_misc.dm | 2 + code/_globalvars/lists/maintenance_loot.dm | 7 +- code/_globalvars/lists/mapping.dm | 3 +- code/_globalvars/misc.dm | 9 - code/_globalvars/religion.dm | 14 + code/_globalvars/traits.dm | 10 +- code/_onclick/click.dm | 1 + code/_onclick/hud/_defines.dm | 17 +- code/_onclick/hud/alert.dm | 17 + code/_onclick/hud/alien.dm | 7 +- code/_onclick/hud/hud.dm | 13 +- code/_onclick/hud/human.dm | 4 +- code/_onclick/hud/lavaland_elite.dm | 16 - code/_onclick/hud/map_popups.dm | 210 +- code/_onclick/hud/parallax.dm | 10 +- code/_onclick/hud/plane_master.dm | 53 +- code/_onclick/hud/radial.dm | 5 +- code/_onclick/hud/screen_objects.dm | 10 - code/_onclick/hud/slime.dm | 16 - code/_onclick/observer.dm | 15 +- .../configuration/entries/game_options.dm | 10 + .../configuration/entries/general.dm | 3 + code/controllers/master.dm | 15 +- code/controllers/subsystem.dm | 111 +- code/controllers/subsystem/discord.dm | 22 +- code/controllers/subsystem/mapping.dm | 13 +- code/controllers/subsystem/materials.dm | 11 +- code/controllers/subsystem/minor_mapping.dm | 6 +- code/controllers/subsystem/persistence.dm | 5 +- code/controllers/subsystem/shuttle.dm | 47 +- code/controllers/subsystem/ticker.dm | 10 +- code/controllers/subsystem/traumas.dm | 6 +- code/controllers/subsystem/weather.dm | 3 +- code/datums/components/beauty.dm | 10 +- code/datums/components/caltrop.dm | 2 +- code/datums/components/crafting/recipes.dm | 38 +- code/datums/components/edible.dm | 16 +- code/datums/components/embedded.dm | 6 +- code/datums/components/footstep.dm | 6 +- code/datums/components/gunpoint.dm | 3 + code/datums/components/hot_ice.dm | 36 + code/datums/components/label.dm | 87 + code/datums/components/mood.dm | 12 +- code/datums/components/plumbing/_plumbing.dm | 61 +- code/datums/components/riding.dm | 13 +- code/datums/components/shrink.dm | 5 +- code/datums/components/slippery.dm | 2 +- code/datums/components/tackle.dm | 496 + code/datums/components/twohanded.dm | 315 + code/datums/datacore.dm | 49 +- .../datums/diseases/advance/symptoms/fever.dm | 32 +- code/datums/diseases/advance/symptoms/heal.dm | 10 +- .../diseases/advance/symptoms/shivering.dm | 34 +- code/datums/diseases/gastrolisis.dm | 2 +- code/datums/elements/snail_crawl.dm | 6 +- code/datums/elements/squish.dm | 26 +- code/datums/elements/tool_flash.dm | 33 + code/datums/elements/undertile.dm | 59 + code/datums/hud.dm | 4 +- code/datums/martial/cqc.dm | 2 +- code/datums/martial/sleeping_carp.dm | 32 +- code/datums/materials/_material.dm | 57 +- code/datums/materials/basemats.dm | 22 + code/datums/materials/meat.dm | 34 + code/datums/mind.dm | 6 +- code/datums/mood_events/drug_events.dm | 6 +- .../mood_events/generic_negative_events.dm | 23 +- .../mood_events/generic_positive_events.dm | 8 +- code/datums/mutations/_combined.dm | 4 + code/datums/mutations/_mutations.dm | 55 +- code/datums/mutations/actions.dm | 12 +- code/datums/mutations/body.dm | 97 +- code/datums/ruins/space.dm | 7 +- code/datums/saymode.dm | 6 +- code/datums/skills/_skill.dm | 18 + code/datums/skills/gaming.dm | 15 + code/datums/skills/mining.dm | 2 +- code/datums/status_effects/buffs.dm | 42 +- code/datums/status_effects/debuffs.dm | 4 +- code/datums/status_effects/gas.dm | 2 +- code/datums/traits/negative.dm | 2 + code/datums/traits/neutral.dm | 52 + .../weather/weather_types/radiation_storm.dm | 2 +- code/datums/wires/explosive.dm | 6 +- code/game/area/Space_Station_13_areas.dm | 159 +- code/game/area/areas.dm | 1 - code/game/atoms.dm | 11 +- code/game/atoms_movable.dm | 44 +- code/game/gamemodes/cult/cult.dm | 2 +- code/game/gamemodes/dynamic/dynamic.dm | 41 - .../dynamic/dynamic_rulesets_latejoin.dm | 1 + .../dynamic/dynamic_rulesets_midround.dm | 47 +- .../dynamic/dynamic_rulesets_roundstart.dm | 15 +- code/game/gamemodes/game_mode.dm | 4 + code/game/gamemodes/gang/gang.dm | 457 + code/game/gamemodes/gang/gang_things.dm | 53 + code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/machinery/Beacon.dm | 20 +- code/game/machinery/_machinery.dm | 8 + code/game/machinery/autolathe.dm | 19 +- code/game/machinery/bank_machine.dm | 4 +- code/game/machinery/computer/_computer.dm | 3 +- code/game/machinery/computer/aifixer.dm | 125 +- code/game/machinery/computer/arcade.dm | 118 +- code/game/machinery/computer/camera.dm | 258 +- code/game/machinery/computer/card.dm | 3 +- .../game/machinery/computer/communications.dm | 6 +- code/game/machinery/computer/crew.dm | 1 + code/game/machinery/computer/dna_console.dm | 38 +- code/game/machinery/computer/robot.dm | 203 +- code/game/machinery/computer/security.dm | 103 +- code/game/machinery/computer/teleporter.dm | 4 +- code/game/machinery/computer/warrant.dm | 20 +- code/game/machinery/defibrillator_mount.dm | 62 +- code/game/machinery/doors/airlock.dm | 109 +- code/game/machinery/doors/door.dm | 7 +- code/game/machinery/firealarm.dm | 22 +- code/game/machinery/flasher.dm | 2 +- code/game/machinery/gulag_item_reclaimer.dm | 4 +- code/game/machinery/igniter.dm | 4 +- code/game/machinery/lightswitch.dm | 4 + code/game/machinery/magnet.dm | 16 +- code/game/machinery/navbeacon.dm | 20 +- code/game/machinery/pipe/construction.dm | 1 - code/game/machinery/prisonlabor.dm | 66 + code/game/machinery/recharger.dm | 28 +- code/game/machinery/scan_gate.dm | 5 +- code/game/machinery/sheetifier.dm | 44 + code/game/machinery/spaceheater.dm | 11 +- code/game/machinery/stasis.dm | 5 - .../telecomms/machines/message_server.dm | 3 +- code/game/machinery/washing_machine.dm | 11 +- code/game/mecha/combat/five_stars.dm | 22 + .../mecha/equipment/tools/medical_tools.dm | 2 +- code/game/mecha/equipment/weapons/weapons.dm | 3 + code/game/mecha/mecha.dm | 3 + code/game/mecha/mecha_construction_paths.dm | 4 +- code/game/mecha/mecha_control_console.dm | 161 +- code/game/mecha/mecha_parts.dm | 5 + code/game/objects/buckling.dm | 14 + code/game/objects/effects/alien_acid.dm | 1 + code/game/objects/effects/anomalies.dm | 2 + code/game/objects/effects/decals/crayon.dm | 18 +- .../effects/effect_system/effects_foam.dm | 4 - .../effects/effect_system/effects_smoke.dm | 4 +- .../effects/effect_system/effects_sparks.dm | 2 +- code/game/objects/effects/effects.dm | 1 + code/game/objects/effects/landmarks.dm | 10 + code/game/objects/effects/mines.dm | 8 +- code/game/objects/effects/overlays.dm | 1 + code/game/objects/effects/portals.dm | 63 +- code/game/objects/effects/proximity.dm | 1 + .../game/objects/effects/spawners/lootdrop.dm | 72 +- .../temporary_visuals/miscellaneous.dm | 1 + code/game/objects/items.dm | 49 +- code/game/objects/items/RCD.dm | 18 +- code/game/objects/items/RCL.dm | 67 +- code/game/objects/items/airlock_painter.dm | 18 + code/game/objects/items/binoculars.dm | 65 + code/game/objects/items/broom.dm | 77 + code/game/objects/items/cardboard_cutouts.dm | 3 +- code/game/objects/items/cards_ids.dm | 20 + code/game/objects/items/chainsaw.dm | 91 + .../circuitboards/computer_circuitboards.dm | 4 +- .../circuitboards/machine_circuitboards.dm | 8 +- code/game/objects/items/cosmetics.dm | 3 + code/game/objects/items/crayons.dm | 99 +- code/game/objects/items/defib.dm | 91 +- code/game/objects/items/devices/PDA/PDA.dm | 4 +- code/game/objects/items/devices/PDA/cart.dm | 22 +- .../objects/items/devices/geiger_counter.dm | 1 + .../game/objects/items/devices/instruments.dm | 6 +- .../objects/items/devices/lightreplacer.dm | 2 +- .../objects/items/devices/pressureplates.dm | 26 +- .../items/devices/radio/electropack.dm | 12 +- .../items/devices/radio/encryptionkey.dm | 5 + .../objects/items/devices/radio/headset.dm | 6 + .../objects/items/devices/radio/intercom.dm | 1 - .../game/objects/items/devices/radio/radio.dm | 11 +- .../items/devices/reverse_bear_trap.dm | 2 - code/game/objects/items/devices/scanners.dm | 14 +- code/game/objects/items/devices/spyglasses.dm | 64 +- .../objects/items/devices/taperecorder.dm | 8 +- .../objects/items/devices/traitordevices.dm | 14 +- .../objects/items/devices/transfer_valve.dm | 2 +- code/game/objects/items/dice.dm | 2 +- code/game/objects/items/dna_injector.dm | 8 +- code/game/objects/items/dualsaber.dm | 188 + code/game/objects/items/fireaxe.dm | 69 + code/game/objects/items/granters.dm | 2 +- .../game/objects/items/grenades/ghettobomb.dm | 27 +- code/game/objects/items/handcuffs.dm | 1 - code/game/objects/items/holy_weapons.dm | 6 +- .../objects/items/implants/implantchair.dm | 4 +- code/game/objects/items/implants/implanter.dm | 2 +- code/game/objects/items/kitchen.dm | 40 +- code/game/objects/items/melee/misc.dm | 4 +- code/game/objects/items/miscellaneous.dm | 9 + code/game/objects/items/pitchfork.dm | 100 + code/game/objects/items/plushes.dm | 39 +- code/game/objects/items/puzzle_pieces.dm | 12 +- code/game/objects/items/robot/robot_items.dm | 4 +- .../objects/items/robot/robot_upgrades.dm | 7 +- code/game/objects/items/sharpener.dm | 25 +- code/game/objects/items/singularityhammer.dm | 76 +- code/game/objects/items/spear.dm | 170 + .../objects/items/stacks/license_plates.dm | 30 + code/game/objects/items/stacks/medical.dm | 52 +- .../game/objects/items/stacks/sheets/glass.dm | 15 +- .../objects/items/stacks/sheets/hot_ice.dm | 13 + .../objects/items/stacks/sheets/leather.dm | 12 +- .../objects/items/stacks/sheets/mineral.dm | 11 + .../items/stacks/sheets/sheet_types.dm | 21 +- .../objects/items/stacks/sheets/sheets.dm | 2 + code/game/objects/items/stacks/tape.dm | 9 +- .../objects/items/stacks/tiles/tile_types.dm | 18 + code/game/objects/items/storage/backpack.dm | 32 +- code/game/objects/items/storage/bags.dm | 8 +- code/game/objects/items/storage/belt.dm | 2 +- code/game/objects/items/storage/book.dm | 29 +- code/game/objects/items/storage/boxes.dm | 8 + code/game/objects/items/storage/fancy.dm | 5 + code/game/objects/items/storage/lockbox.dm | 2 +- code/game/objects/items/storage/toolbox.dm | 35 + .../game/objects/items/storage/uplink_kits.dm | 10 +- code/game/objects/items/stunbaton.dm | 17 +- code/game/objects/items/tanks/jetpack.dm | 31 +- code/game/objects/items/tanks/tanks.dm | 4 - code/game/objects/items/teleportation.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 18 +- code/game/objects/items/toys.dm | 12 +- code/game/objects/items/twohanded.dm | 917 - code/game/objects/items/weaponry.dm | 60 +- code/game/objects/obj_defense.dm | 9 +- code/game/objects/objs.dm | 6 +- code/game/objects/structures.dm | 7 +- code/game/objects/structures/artstuff.dm | 42 +- .../structures/beds_chairs/alien_nest.dm | 4 +- .../objects/structures/beds_chairs/bed.dm | 4 +- .../objects/structures/beds_chairs/chair.dm | 8 +- .../structures/crates_lockers/closets.dm | 5 + .../crates_lockers/closets/gimmick.dm | 4 +- .../crates_lockers/closets/job_closets.dm | 2 +- .../crates_lockers/closets/secure/medical.dm | 22 + .../crates_lockers/closets/secure/security.dm | 2 +- .../structures/crates_lockers/crates.dm | 12 +- .../crates_lockers/crates/critter.dm | 3 + code/game/objects/structures/displaycase.dm | 163 +- code/game/objects/structures/electricchair.dm | 6 + code/game/objects/structures/fireaxe.dm | 8 +- code/game/objects/structures/flora.dm | 20 +- .../objects/structures/ghost_role_spawners.dm | 134 +- code/game/objects/structures/girders.dm | 13 +- code/game/objects/structures/guillotine.dm | 2 + code/game/objects/structures/headpike.dm | 6 +- code/game/objects/structures/janicart.dm | 6 +- code/game/objects/structures/ladders.dm | 12 +- code/game/objects/structures/lattice.dm | 9 +- .../objects/structures/lavaland/geyser.dm | 10 + code/game/objects/structures/mirror.dm | 2 + code/game/objects/structures/railings.dm | 24 +- code/game/objects/structures/reflector.dm | 2 +- code/game/objects/structures/safe.dm | 10 +- .../structures/signs/signs_departments.dm | 4 + .../objects/structures/signs/signs_maps.dm | 11 + code/game/objects/structures/tables_racks.dm | 32 +- .../transit_tubes/transit_tube_pod.dm | 7 + code/game/objects/structures/traps.dm | 1 + code/game/objects/structures/window.dm | 7 +- code/game/say.dm | 1 + code/game/turfs/closed/_closed.dm | 3 +- code/game/turfs/closed/minerals.dm | 6 +- code/game/turfs/closed/wall/material_walls.dm | 19 + code/game/turfs/closed/wall/mineral_walls.dm | 2 +- code/game/turfs/open/floor.dm | 19 +- code/game/turfs/open/floor/fancy_floor.dm | 1 + code/game/turfs/open/floor/hull.dm | 19 + code/game/turfs/open/floor/misc_floor.dm | 7 + code/game/turfs/open/floor/plating.dm | 22 +- .../game/turfs/open/floor/plating/asteroid.dm | 1 + code/game/turfs/open/openspace.dm | 29 +- code/game/turfs/open/space/space.dm | 8 + code/game/turfs/turf.dm | 48 +- code/modules/admin/fun_balloon.dm | 2 +- code/modules/admin/player_panel.dm | 23 +- code/modules/admin/verbs/adminhelp.dm | 2 +- code/modules/admin/verbs/one_click_antag.dm | 2 +- .../antagonists/_common/antag_datum.dm | 36 +- .../abductor/equipment/abduction_gear.dm | 2 +- .../antagonists/abductor/machinery/camera.dm | 15 + .../antagonists/ashwalker/ashwalker.dm | 4 + code/modules/antagonists/blob/blob_mobs.dm | 59 +- .../blob/blobstrains/distributed_neurons.dm | 39 + .../blob/blobstrains/zombifying_pods.dm | 46 - code/modules/antagonists/blob/overmind.dm | 8 + code/modules/antagonists/blob/powers.dm | 2 +- .../antagonists/blob/structures/core.dm | 5 +- .../antagonists/blob/structures/factory.dm | 1 + .../antagonists/blob/structures/node.dm | 1 + .../antagonists/blob/structures/resource.dm | 1 + .../changeling/powers/regenerate.dm | 4 +- .../changeling/powers/strained_muscles.dm | 6 +- .../changeling/powers/tiny_prick.dm | 1 - code/modules/antagonists/cult/blood_magic.dm | 6 +- code/modules/antagonists/cult/cult_items.dm | 59 +- code/modules/antagonists/cult/runes.dm | 9 +- code/modules/antagonists/devil/imp/imp.dm | 2 +- .../devil/true_devil/_true_devil.dm | 4 +- code/modules/antagonists/ert/ert.dm | 115 +- .../antagonists/fugitive/fugitive_outfits.dm | 6 +- code/modules/antagonists/gang/gang.dm | 429 + code/modules/antagonists/gang/outfits.dm | 83 + code/modules/antagonists/morph/morph.dm | 1 + .../nukeop/equipment/nuclearbomb.dm | 2 +- code/modules/antagonists/revenant/revenant.dm | 2 +- .../antagonists/revolution/revolution.dm | 6 +- .../antagonists/slaughter/slaughter.dm | 7 +- .../antagonists/space_dragon/space_dragon.dm | 56 +- .../antagonists/traitor/datum_traitor.dm | 5 +- .../traitor/equipment/module_picker.dm | 8 +- .../antagonists/wizard/equipment/artefact.dm | 2 +- .../antagonists/wizard/equipment/spellbook.dm | 15 +- code/modules/assembly/holder.dm | 1 + code/modules/assembly/infrared.dm | 3 +- code/modules/assembly/proximity.dm | 2 +- code/modules/assembly/signaler.dm | 2 +- code/modules/assembly/timer.dm | 2 +- .../atmospherics/gasmixtures/gas_types.dm | 10 + .../atmospherics/gasmixtures/reactions.dm | 86 + .../atmospherics/machinery/airalarm.dm | 14 +- .../atmospherics/machinery/atmosmachinery.dm | 10 +- .../binary_devices/binary_devices.dm | 4 - .../components/binary_devices/dp_vent_pump.dm | 3 +- .../components/binary_devices/passive_gate.dm | 4 - .../components/binary_devices/pump.dm | 4 - .../components/binary_devices/volume_pump.dm | 4 - .../machinery/components/components_base.dm | 24 +- .../components/trinary_devices/filter.dm | 4 - .../components/trinary_devices/mixer.dm | 4 - .../unary_devices/outlet_injector.dm | 6 +- .../components/unary_devices/passive_vent.dm | 4 +- .../unary_devices/portables_connector.dm | 4 +- .../components/unary_devices/thermomachine.dm | 11 +- .../components/unary_devices/unary_devices.dm | 4 - .../components/unary_devices/vent_pump.dm | 2 +- .../components/unary_devices/vent_scrubber.dm | 2 +- .../atmospherics/machinery/other/meter.dm | 2 - .../machinery/pipes/heat_exchange/he_pipes.dm | 7 +- .../machinery/pipes/heat_exchange/junction.dm | 2 - .../machinery/pipes/heat_exchange/manifold.dm | 2 - .../pipes/heat_exchange/manifold4w.dm | 2 - .../machinery/pipes/heat_exchange/simple.dm | 2 - .../machinery/pipes/layermanifold.dm | 5 - .../atmospherics/machinery/pipes/manifold.dm | 1 - .../machinery/pipes/manifold4w.dm | 1 - .../atmospherics/machinery/pipes/mapping.dm | 4 +- .../atmospherics/machinery/pipes/pipes.dm | 26 +- .../atmospherics/machinery/pipes/simple.dm | 1 - .../machinery/portable/canister.dm | 10 +- .../atmospherics/machinery/portable/pump.dm | 4 - .../machinery/portable/scrubber.dm | 2 +- code/modules/awaymissions/capture_the_flag.dm | 31 +- code/modules/awaymissions/corpse.dm | 10 +- code/modules/awaymissions/gateway.dm | 462 +- .../awaymissions/mission_code/Academy.dm | 2 +- .../awaymissions/mission_code/snowdin.dm | 10 +- .../awaymissions/mission_code/wildwest.dm | 1 + code/modules/awaymissions/zlevel.dm | 37 +- .../blackmarket/blackmarket_items/clothing.dm | 10 + .../blackmarket/blackmarket_items/tools.dm | 2 +- .../blackmarket/blackmarket_items/weapons.dm | 2 +- code/modules/cargo/bounties/assistant.dm | 6 +- code/modules/cargo/bounties/chef.dm | 7 + code/modules/cargo/bounties/engineering.dm | 5 + code/modules/cargo/bounties/mining.dm | 2 +- code/modules/cargo/console.dm | 2 + code/modules/cargo/exports/materials.dm | 6 + code/modules/cargo/exports/parts.dm | 82 + code/modules/cargo/exports/sheets.dm | 6 + code/modules/cargo/exports/tools.dm | 25 + code/modules/cargo/packs.dm | 51 +- code/modules/client/preferences.dm | 6 +- code/modules/client/preferences_savefile.dm | 7 +- code/modules/client/preferences_toggles.dm | 15 + code/modules/clothing/chameleon.dm | 8 +- code/modules/clothing/clothing.dm | 85 + code/modules/clothing/glasses/hud.dm | 21 +- code/modules/clothing/gloves/color.dm | 9 + code/modules/clothing/gloves/miscellaneous.dm | 13 +- code/modules/clothing/gloves/tacklers.dm | 100 + code/modules/clothing/head/helmet.dm | 13 + code/modules/clothing/head/misc.dm | 14 + code/modules/clothing/head/misc_special.dm | 8 + code/modules/clothing/masks/boxing.dm | 32 + code/modules/clothing/outfits/ert.dm | 1 + code/modules/clothing/outfits/standard.dm | 14 +- code/modules/clothing/outfits/vr.dm | 2 +- code/modules/clothing/shoes/_shoes.dm | 166 + code/modules/clothing/shoes/miscellaneous.dm | 43 + .../modules/clothing/spacesuits/chronosuit.dm | 3 + .../clothing/spacesuits/miscellaneous.dm | 25 + code/modules/clothing/suits/armor.dm | 10 + code/modules/clothing/suits/chaplainsuits.dm | 16 +- code/modules/clothing/suits/cloaks.dm | 4 +- code/modules/clothing/suits/miscellaneous.dm | 17 +- code/modules/clothing/under/costume.dm | 21 + code/modules/clothing/under/jobs/security.dm | 7 + code/modules/clothing/under/suits.dm | 9 + code/modules/clothing/under/syndicate.dm | 16 + code/modules/detectivework/evidence.dm | 6 +- .../detectivework/footprints_and_rag.dm | 4 +- code/modules/discord/accountlink.dm | 44 + code/modules/discord/tgs_commands.dm | 5 +- code/modules/events/_event.dm | 1 + code/modules/events/pirates.dm | 87 +- code/modules/events/shuttle_loan.dm | 19 +- code/modules/events/space_dragon.dm | 11 +- code/modules/events/spacevine.dm | 14 +- code/modules/events/stray_cargo.dm | 99 + code/modules/events/wisdomcow.dm | 14 + code/modules/events/wizard/magicarp.dm | 3 + code/modules/fields/turf_objects.dm | 2 + code/modules/flufftext/Hallucination.dm | 22 +- code/modules/food_and_drinks/drinks/drinks.dm | 13 +- .../food_and_drinks/drinks/drinks/bottle.dm | 59 + .../modules/food_and_drinks/food/condiment.dm | 2 - .../food_and_drinks/food/customizables.dm | 11 + .../food_and_drinks/food/snacks/meat.dm | 2 + .../food_and_drinks/food/snacks_bread.dm | 9 + .../food_and_drinks/food/snacks_cake.dm | 4 + .../food_and_drinks/food/snacks_frozen.dm | 11 + .../food_and_drinks/food/snacks_other.dm | 1 + .../food_and_drinks/food/snacks_pastry.dm | 10 + .../food_and_drinks/food/snacks_vend.dm | 1 + .../kitchen_machinery/microwave.dm | 6 +- .../kitchen_machinery/smartfridge.dm | 10 +- .../recipes/tablecraft/recipes_bread.dm | 9 + .../recipes/tablecraft/recipes_drink.dm | 20 + .../recipes/tablecraft/recipes_frozen.dm | 10 + .../recipes/tablecraft/recipes_misc.dm | 10 + .../recipes/tablecraft/recipes_pastry.dm | 10 + .../browserassets/js/browserOutput.js | 125 +- code/modules/hydroponics/grown.dm | 3 +- code/modules/hydroponics/grown/misc.dm | 31 + code/modules/hydroponics/grown/root.dm | 2 +- code/modules/hydroponics/grown/towercap.dm | 1 + code/modules/hydroponics/hydroitemdefines.dm | 1 + code/modules/jobs/access.dm | 12 +- code/modules/jobs/job_exp.dm | 2 +- code/modules/jobs/job_types/chaplain.dm | 8 +- .../jobs/job_types/chief_medical_officer.dm | 4 +- .../jobs/job_types/head_of_personnel.dm | 4 +- code/modules/jobs/job_types/psychologist.dm | 38 + code/modules/jobs/jobs.dm | 1 + code/modules/jobs/map_changes/map_changes.dm | 6 + code/modules/language/language_holder.dm | 5 + code/modules/library/lib_items.dm | 2 +- code/modules/library/lib_machines.dm | 31 +- code/modules/lighting/emissive_blocker.dm | 44 + code/modules/mapping/reader.dm | 1 + .../mining/equipment/kinetic_crusher.dm | 75 +- .../mining/equipment/regenerative_core.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/machine_vending.dm | 4 +- code/modules/mining/ores_coins.dm | 24 +- code/modules/mob/dead/dead.dm | 3 +- code/modules/mob/dead/observer/observer.dm | 4 +- code/modules/mob/inventory.dm | 1 + code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/brain/MMI.dm | 8 +- code/modules/mob/living/brain/brain_item.dm | 7 +- code/modules/mob/living/brain/posibrain.dm | 45 +- .../carbon/alien/humanoid/alien_powers.dm | 2 +- .../mob/living/carbon/alien/humanoid/queen.dm | 2 +- .../living/carbon/alien/special/facehugger.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 43 +- .../mob/living/carbon/carbon_defense.dm | 4 +- .../mob/living/carbon/carbon_defines.dm | 2 +- .../mob/living/carbon/carbon_movement.dm | 17 +- code/modules/mob/living/carbon/death.dm | 1 + code/modules/mob/living/carbon/emote.dm | 12 + code/modules/mob/living/carbon/human/death.dm | 5 +- .../mob/living/carbon/human/examine.dm | 7 +- code/modules/mob/living/carbon/human/human.dm | 138 +- .../mob/living/carbon/human/human_defense.dm | 18 +- .../mob/living/carbon/human/human_defines.dm | 1 + .../mob/living/carbon/human/human_movement.dm | 12 +- code/modules/mob/living/carbon/human/life.dm | 14 + code/modules/mob/living/carbon/human/say.dm | 8 +- .../mob/living/carbon/human/species.dm | 224 +- .../living/carbon/human/species_types/IPC.dm | 2 +- .../carbon/human/species_types/dullahan.dm | 6 +- .../carbon/human/species_types/ethereal.dm | 5 +- .../carbon/human/species_types/felinid.dm | 37 +- .../carbon/human/species_types/jellypeople.dm | 1 + .../human/species_types/lizardpeople.dm | 6 +- .../carbon/human/species_types/mothmen.dm | 10 +- .../human/species_types/shadowpeople.dm | 6 +- .../carbon/human/species_types/snail.dm | 2 +- .../carbon/human/species_types/vampire.dm | 2 +- code/modules/mob/living/carbon/inventory.dm | 2 + code/modules/mob/living/carbon/life.dm | 23 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- .../mob/living/carbon/monkey/monkey.dm | 10 +- code/modules/mob/living/death.dm | 4 +- code/modules/mob/living/inhand_holder.dm | 21 +- code/modules/mob/living/living.dm | 124 +- code/modules/mob/living/living_defense.dm | 4 +- code/modules/mob/living/living_defines.dm | 25 +- code/modules/mob/living/living_movement.dm | 25 +- code/modules/mob/living/silicon/ai/ai.dm | 117 +- .../mob/living/silicon/ai/freelook/eye.dm | 19 + .../mob/living/silicon/ai/robot_control.dm | 74 + code/modules/mob/living/silicon/pai/death.dm | 2 +- code/modules/mob/living/silicon/pai/pai.dm | 11 +- .../mob/living/silicon/pai/pai_shell.dm | 13 +- .../mob/living/silicon/pai/software.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 44 +- .../mob/living/silicon/robot/robot_defense.dm | 17 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../living/simple_animal/bot/construction.dm | 2 +- .../mob/living/simple_animal/bot/firebot.dm | 2 +- .../mob/living/simple_animal/bot/floorbot.dm | 4 +- .../mob/living/simple_animal/bot/honkbot.dm | 4 +- .../mob/living/simple_animal/bot/medbot.dm | 45 +- .../mob/living/simple_animal/bot/secbot.dm | 4 +- .../mob/living/simple_animal/constructs.dm | 2 +- .../mob/living/simple_animal/corpse.dm | 28 +- .../mob/living/simple_animal/friendly/cat.dm | 14 + .../mob/living/simple_animal/friendly/dog.dm | 15 +- .../simple_animal/friendly/drone/_drone.dm | 106 +- .../friendly/drone/drones_as_items.dm | 10 +- .../friendly/drone/extra_drone_types.dm | 10 +- .../friendly/drone/interaction.dm | 78 +- .../simple_animal/friendly/drone/say.dm | 27 +- .../simple_animal/friendly/drone/verbs.dm | 17 +- .../friendly/drone/visuals_icons.dm | 36 +- .../simple_animal/friendly/farm_animals.dm | 25 + .../mob/living/simple_animal/friendly/fox.dm | 2 + .../living/simple_animal/friendly/mouse.dm | 12 +- .../living/simple_animal/friendly/sloth.dm | 1 + .../living/simple_animal/guardian/guardian.dm | 76 +- .../simple_animal/guardian/types/assassin.dm | 2 +- .../simple_animal/guardian/types/charger.dm | 2 +- .../simple_animal/guardian/types/dextrous.dm | 2 +- .../simple_animal/guardian/types/explosive.dm | 2 +- .../simple_animal/guardian/types/fire.dm | 2 +- .../guardian/types/gravitokinetic.dm | 2 +- .../simple_animal/guardian/types/lightning.dm | 2 +- .../simple_animal/guardian/types/protector.dm | 2 +- .../simple_animal/guardian/types/ranged.dm | 3 +- .../simple_animal/guardian/types/standard.dm | 2 +- .../simple_animal/guardian/types/support.dm | 2 +- .../mob/living/simple_animal/hostile/alien.dm | 4 +- .../mob/living/simple_animal/hostile/bear.dm | 19 +- .../mob/living/simple_animal/hostile/bees.dm | 2 +- .../simple_animal/hostile/bosses/boss.dm | 1 + .../mob/living/simple_animal/hostile/carp.dm | 27 +- .../living/simple_animal/hostile/cockroach.dm | 3 +- .../living/simple_animal/hostile/eyeballs.dm | 5 +- .../living/simple_animal/hostile/faithless.dm | 5 +- .../simple_animal/hostile/giant_spider.dm | 6 +- .../living/simple_animal/hostile/hostile.dm | 7 + .../simple_animal/hostile/megafauna/drake.dm | 75 - .../hostile/megafauna/megafauna.dm | 4 +- .../hostile/mining_mobs/elites/elite.dm | 32 - .../hostile/mining_mobs/goldgrub.dm | 24 +- .../hostile/mining_mobs/goliath.dm | 7 - .../hostile/mining_mobs/hivelord.dm | 4 +- .../living/simple_animal/hostile/mushroom.dm | 2 +- .../simple_animal/hostile/nanotrasen.dm | 19 +- .../living/simple_animal/hostile/pirate.dm | 10 +- .../simple_animal/hostile/retaliate/bat.dm | 5 +- .../simple_animal/hostile/retaliate/frog.dm | 1 + .../living/simple_animal/hostile/skeleton.dm | 2 +- .../simple_animal/hostile/space_dragon.dm | 533 + .../living/simple_animal/hostile/syndicate.dm | 12 +- .../simple_animal/hostile/venus_human_trap.dm | 194 +- .../living/simple_animal/hostile/zombie.dm | 1 - .../modules/mob/living/simple_animal/shade.dm | 5 +- .../mob/living/simple_animal/simple_animal.dm | 34 +- .../mob/living/simple_animal/slime/death.dm | 2 +- .../mob/living/simple_animal/slime/life.dm | 2 +- .../mob/living/simple_animal/slime/powers.dm | 9 +- .../mob/living/simple_animal/slime/slime.dm | 38 +- code/modules/mob/living/status_procs.dm | 36 +- code/modules/mob/login.dm | 2 +- code/modules/mob/logout.dm | 4 +- code/modules/mob/mob.dm | 37 +- code/modules/mob/mob_defines.dm | 12 +- code/modules/mob/mob_helpers.dm | 3 +- code/modules/mob/mob_lists.dm | 119 + code/modules/mob/mob_movement.dm | 8 +- code/modules/mob/mob_movespeed.dm | 166 - .../computers/item/computer.dm | 2 +- .../computers/item/laptop.dm | 3 +- .../file_system/programs/airestorer.dm | 10 +- .../file_system/programs/arcade.dm | 25 +- .../file_system/programs/card.dm | 4 +- code/modules/movespeed/_movespeed_modifier.dm | 217 + .../modules/movespeed/modifiers/components.dm | 21 + code/modules/movespeed/modifiers/innate.dm | 15 + code/modules/movespeed/modifiers/items.dm | 12 + code/modules/movespeed/modifiers/misc.dm | 6 + code/modules/movespeed/modifiers/mobs.dm | 113 + code/modules/movespeed/modifiers/reagent.dm | 35 + .../movespeed/modifiers/status_effects.dm | 17 + .../suit/n_suit_verbs/energy_net_nets.dm | 2 +- .../suit/n_suit_verbs/ninja_adrenaline.dm | 1 - code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/handlabeler.dm | 9 +- code/modules/paperwork/paper_premade.dm | 11 + .../camera/camera_image_capturing.dm | 2 +- code/modules/plumbing/ducts.dm | 14 +- .../plumbing/plumbers/_plumb_machinery.dm | 2 +- code/modules/power/apc.dm | 41 +- code/modules/power/cable.dm | 27 +- code/modules/power/cell.dm | 14 +- code/modules/power/floodlight.dm | 1 - code/modules/power/lighting.dm | 13 +- code/modules/power/multiz.dm | 14 +- code/modules/power/power.dm | 4 +- code/modules/power/singularity/boh_tear.dm | 6 + .../power/singularity/containment_field.dm | 3 +- .../particle_accelerator/particle.dm | 1 + .../particle_accelerator/particle_control.dm | 137 +- code/modules/power/singularity/singularity.dm | 25 +- code/modules/power/smes.dm | 14 +- code/modules/power/supermatter/supermatter.dm | 279 +- code/modules/power/terminal.dm | 15 +- code/modules/projectiles/gun.dm | 12 +- .../projectiles/guns/energy/special.dm | 23 +- code/modules/projectiles/guns/magic/wand.dm | 5 +- .../projectiles/guns/misc/beam_rifle.dm | 2 - .../projectile/bullets/dart_syringe.dm | 4 +- .../projectile/bullets/dnainjector.dm | 4 +- .../projectiles/projectile/energy/tesla.dm | 17 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../chemistry/machinery/chem_dispenser.dm | 1 - .../chemistry/machinery/chem_heater.dm | 9 +- .../chemistry/reagents/alcohol_reagents.dm | 27 +- .../reagents/cat2_medicine_reagents.dm | 41 +- .../chemistry/reagents/drink_reagents.dm | 106 +- .../chemistry/reagents/drug_reagents.dm | 4 +- .../chemistry/reagents/food_reagents.dm | 19 +- .../chemistry/reagents/medicine_reagents.dm | 79 +- .../chemistry/reagents/other_reagents.dm | 45 +- .../chemistry/reagents/toxin_reagents.dm | 9 +- .../reagents/chemistry/recipes/medicine.dm | 11 +- .../reagents/chemistry/recipes/others.dm | 5 + code/modules/reagents/reagent_containers.dm | 4 +- .../reagents/reagent_containers/syringes.dm | 25 + code/modules/reagents/reagent_dispenser.dm | 10 +- code/modules/recycling/disposal/bin.dm | 10 +- .../recycling/disposal/construction.dm | 12 +- code/modules/recycling/disposal/pipe.dm | 14 +- code/modules/religion/religion_sects.dm | 195 + code/modules/religion/religion_structures.dm | 121 + code/modules/religion/rites.dm | 78 + .../research/designs/AI_module_designs.dm | 1 - .../research/designs/autolathe_designs.dm | 31 +- .../research/designs/comp_board_designs.dm | 2 +- .../research/designs/machine_designs.dm | 8 + .../research/designs/medical_designs.dm | 22 +- code/modules/research/designs/misc_designs.dm | 1205 +- .../research/designs/stock_parts_designs.dm | 10 + .../research/nanites/nanite_programs.dm | 2 +- .../nanites/nanite_programs/healing.dm | 10 +- .../nanites/nanite_programs/sensor.dm | 5 +- .../nanites/nanite_programs/suppression.dm | 2 +- code/modules/research/stock_parts.dm | 6 + code/modules/research/techweb/all_nodes.dm | 79 +- .../crossbreeding/_status_effects.dm | 34 +- .../xenobiology/crossbreeding/_weapons.dm | 8 +- .../xenobiology/crossbreeding/burning.dm | 2 +- .../xenobiology/crossbreeding/industrial.dm | 2 +- .../research/xenobiology/xenobiology.dm | 2 +- code/modules/ruins/lavaland_ruin_code.dm | 2 +- .../ruins/objects_and_mobs/ash_walker_den.dm | 40 +- .../ruins/objects_and_mobs/necropolis_gate.dm | 1 + .../ruins/spaceruin_code/forgottenship.dm | 128 + code/modules/shuttle/on_move.dm | 21 +- code/modules/shuttle/special.dm | 2 +- code/modules/spells/spell_types/blind.dm | 34 + code/modules/spells/spell_types/devil.dm | 6 +- code/modules/spells/spell_types/pointed.dm | 75 + .../spell_types/spacetime_distortion.dm | 1 + code/modules/spells/spell_types/trigger.dm | 12 +- code/modules/spells/spell_types/wizard.dm | 29 - code/modules/station_goals/bsa.dm | 9 +- code/modules/station_goals/dna_vault.dm | 4 +- code/modules/surgery/amputation.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 7 +- .../surgery/bodyparts/dismemberment.dm | 59 +- code/modules/surgery/bodyparts/head.dm | 4 + code/modules/surgery/bodyparts/helpers.dm | 2 +- code/modules/surgery/bone_repair.dm | 4 +- code/modules/surgery/healing.dm | 13 +- code/modules/surgery/organic_steps.dm | 2 +- code/modules/surgery/organs/appendix.dm | 3 + code/modules/surgery/organs/augments_chest.dm | 45 +- code/modules/surgery/organs/eyes.dm | 1 - code/modules/surgery/organs/heart.dm | 3 + code/modules/surgery/organs/helpers.dm | 4 +- code/modules/surgery/organs/liver.dm | 3 + code/modules/surgery/organs/lungs.dm | 24 +- code/modules/surgery/organs/organ_internal.dm | 12 + code/modules/surgery/organs/stomach.dm | 3 + .../modules/surgery/prosthetic_replacement.dm | 17 +- .../modules/surgery/{advanced => }/revival.dm | 10 +- code/modules/tgui/external.dm | 2 +- code/modules/tgui/tgui.dm | 4 +- code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/bespoke_id.dm | 8 + code/modules/uplink/uplink_items.dm | 37 +- code/modules/vehicles/vehicle_key.dm | 47 + code/modules/vending/_vending.dm | 23 +- code/modules/vending/assist.dm | 1 + code/modules/vending/autodrobe.dm | 1 + code/modules/vending/boozeomat.dm | 1 + code/modules/vending/cartridge.dm | 1 + code/modules/vending/cigarette.dm | 1 + code/modules/vending/clothesmate.dm | 2 + code/modules/vending/coffee.dm | 3 + code/modules/vending/cola.dm | 17 + code/modules/vending/drinnerware.dm | 1 + code/modules/vending/engineering.dm | 1 + code/modules/vending/engivend.dm | 1 + code/modules/vending/games.dm | 1 + code/modules/vending/liberation.dm | 1 + code/modules/vending/liberation_toy.dm | 3 +- code/modules/vending/magivend.dm | 1 + code/modules/vending/medical.dm | 1 + code/modules/vending/medical_wall.dm | 1 + code/modules/vending/megaseed.dm | 4 +- code/modules/vending/modularpc.dm | 1 + code/modules/vending/nutrimax.dm | 1 + code/modules/vending/robotics.dm | 1 + code/modules/vending/security.dm | 4 +- code/modules/vending/snack.dm | 1 + code/modules/vending/sovietsoda.dm | 2 + code/modules/vending/sustenance.dm | 4 +- code/modules/vending/toys.dm | 3 +- code/modules/vending/wardrobes.dm | 16 +- code/modules/vending/youtool.dm | 1 + config/config.txt | 3 + config/dynamic.json | 1 + config/game_options.txt | 3 +- config/jobs.txt | 1 + config/spaceruinblacklist.txt | 1 + html/browser/scannernew.css | 9 + html/changelog.html | 1899 + html/changelogs/.all_changelog.yml | 830 + html/changelogs/AutoChangeLog-pr-49111.yml | 5 - html/changelogs/AutoChangeLog-pr-49159.yml | 9 - html/changelogs/AutoChangeLog-pr-49260.yml | 7 - html/changelogs/AutoChangeLog-pr-49406.yml | 5 - html/changelogs/AutoChangeLog-pr-49475.yml | 5 - html/changelogs/AutoChangeLog-pr-49484.yml | 5 - html/changelogs/AutoChangeLog-pr-49485.yml | 4 - html/changelogs/AutoChangeLog-pr-49499.yml | 4 - html/changelogs/AutoChangeLog-pr-49504.yml | 4 - html/changelogs/AutoChangeLog-pr-49507.yml | 4 - html/changelogs/AutoChangeLog-pr-49508.yml | 4 - html/changelogs/AutoChangeLog-pr-49515.yml | 4 - html/changelogs/AutoChangeLog-pr-49516.yml | 4 - html/changelogs/AutoChangeLog-pr-49517.yml | 4 - html/changelogs/AutoChangeLog-pr-49526.yml | 5 - html/changelogs/AutoChangeLog-pr-49532.yml | 4 - html/changelogs/AutoChangeLog-pr-49541.yml | 4 - html/changelogs/AutoChangeLog-pr-49553.yml | 4 - html/changelogs/AutoChangeLog-pr-49555.yml | 4 - html/changelogs/AutoChangeLog-pr-49561.yml | 4 - html/changelogs/AutoChangeLog-pr-49585.yml | 4 - html/changelogs/AutoChangeLog-pr-49593.yml | 4 - html/changelogs/AutoChangeLog-pr-49595.yml | 4 - html/changelogs/AutoChangeLog-pr-49596.yml | 4 - html/changelogs/AutoChangeLog-pr-49606.yml | 4 - html/changelogs/AutoChangeLog-pr-50109.yml | 4 + html/changelogs/AutoChangeLog-pr-50116.yml | 7 + html/changelogs/AutoChangeLog-pr-50133.yml | 4 + icons/effects/beam.dmi | Bin 120768 -> 127667 bytes icons/effects/blind_target.dmi | Bin 0 -> 366 bytes icons/effects/effects.dmi | Bin 895317 -> 898538 bytes icons/effects/landmarks_static.dmi | Bin 17982 -> 18187 bytes icons/emoji.dmi | Bin 48553 -> 49121 bytes icons/materials/composite.dmi | Bin 0 -> 836 bytes icons/mecha/mecha_96x96.dmi | Bin 0 -> 187539 bytes icons/mob/actions/actions_AI.dmi | Bin 8853 -> 9630 bytes icons/mob/actions/actions_space_dragon.dmi | Bin 0 -> 1134 bytes icons/mob/actions/actions_spells.dmi | Bin 29137 -> 29519 bytes icons/mob/clothing/back.dmi | Bin 106729 -> 107455 bytes icons/mob/clothing/feet.dmi | Bin 19535 -> 20894 bytes icons/mob/clothing/hands.dmi | Bin 11008 -> 12348 bytes icons/mob/clothing/head.dmi | Bin 203332 -> 205639 bytes icons/mob/clothing/mask.dmi | Bin 51412 -> 51735 bytes icons/mob/clothing/suit.dmi | Bin 370977 -> 378346 bytes icons/mob/clothing/under/costume.dmi | Bin 40257 -> 42894 bytes icons/mob/clothing/under/plasmaman.dmi | Bin 12070 -> 12070 bytes icons/mob/clothing/under/security.dmi | Bin 37669 -> 38569 bytes icons/mob/clothing/under/syndicate.dmi | Bin 14135 -> 17235 bytes icons/mob/guardian.dmi | Bin 57311 -> 35489 bytes icons/mob/hud.dmi | Bin 16153 -> 17534 bytes .../equipment/instruments_lefthand.dmi | Bin 7717 -> 10530 bytes .../equipment/instruments_righthand.dmi | Bin 8201 -> 11396 bytes .../inhands/equipment/kitchen_lefthand.dmi | Bin 2048 -> 2049 bytes .../inhands/equipment/kitchen_righthand.dmi | Bin 2368 -> 2408 bytes .../inhands/equipment/toolbox_lefthand.dmi | Bin 916 -> 1016 bytes .../inhands/equipment/toolbox_righthand.dmi | Bin 894 -> 996 bytes icons/mob/inhands/items_righthand.dmi | Bin 22857 -> 22850 bytes icons/mob/inhands/misc/sheets_lefthand.dmi | Bin 2994 -> 8412 bytes icons/mob/inhands/misc/sheets_righthand.dmi | Bin 3358 -> 9280 bytes icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 22738 -> 21254 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 25479 -> 25703 bytes icons/mob/landmarks.dmi | Bin 26916 -> 27435 bytes icons/mob/monkey_held.dmi | Bin 988 -> 0 bytes icons/mob/pets_held.dmi | Bin 0 -> 508 bytes icons/mob/pets_held_lh.dmi | Bin 401 -> 9803 bytes icons/mob/pets_held_rh.dmi | Bin 399 -> 9849 bytes icons/mob/screen_alert.dmi | Bin 115104 -> 115406 bytes icons/mob/screen_alien.dmi | Bin 17751 -> 18252 bytes icons/mob/screen_changeling.dmi | Bin 0 -> 4164 bytes icons/mob/screen_devil.dmi | Bin 0 -> 2492 bytes icons/mob/screen_elite.dmi | Bin 6245 -> 0 bytes icons/mob/screen_gen.dmi | Bin 113463 -> 113094 bytes icons/mob/screen_gen_old.dmi | Bin 4081 -> 0 bytes icons/mob/screen_slime.dmi | Bin 2581 -> 0 bytes icons/mob/simple_human.dmi | Bin 91394 -> 102922 bytes icons/mob/spacedragon.dmi | Bin 5523 -> 6148 bytes icons/obj/atmospherics/pipes/disposal.dmi | Bin 125653 -> 121506 bytes icons/obj/card.dmi | Bin 13779 -> 13763 bytes icons/obj/carp_rift.dmi | Bin 0 -> 4319 bytes icons/obj/clothing/belts.dmi | Bin 12579 -> 13062 bytes icons/obj/clothing/gloves.dmi | Bin 17604 -> 19757 bytes icons/obj/clothing/hats.dmi | Bin 99858 -> 101250 bytes icons/obj/clothing/masks.dmi | Bin 38124 -> 38771 bytes icons/obj/clothing/shoes.dmi | Bin 15000 -> 15875 bytes icons/obj/clothing/suits.dmi | Bin 135541 -> 138326 bytes icons/obj/clothing/under/costume.dmi | Bin 17813 -> 19029 bytes icons/obj/clothing/under/security.dmi | Bin 4212 -> 4427 bytes icons/obj/clothing/under/syndicate.dmi | Bin 3553 -> 4160 bytes icons/obj/crates.dmi | Bin 25687 -> 26894 bytes icons/obj/decals.dmi | Bin 30832 -> 31534 bytes icons/obj/drinks.dmi | Bin 91255 -> 91606 bytes icons/obj/food/burgerbread.dmi | Bin 34266 -> 35050 bytes icons/obj/food/containers.dmi | Bin 12184 -> 12538 bytes icons/obj/food/food.dmi | Bin 69244 -> 70519 bytes icons/obj/food/frozen_treats.dmi | Bin 3623 -> 3747 bytes icons/obj/gang/actions.dmi | Bin 0 -> 2633 bytes icons/obj/gang/signup_points.dmi | Bin 0 -> 795 bytes icons/obj/gang/tags.dmi | Bin 0 -> 2473 bytes icons/obj/gang/wanted_160x32.dmi | Bin 0 -> 2192 bytes icons/obj/gang/wanted_stars.dmi | Bin 0 -> 1705 bytes icons/obj/hydroponics/growing_vegetables.dmi | Bin 20388 -> 20559 bytes icons/obj/hydroponics/harvest.dmi | Bin 82535 -> 82887 bytes icons/obj/hydroponics/seeds.dmi | Bin 24305 -> 24445 bytes icons/obj/kitchen.dmi | Bin 29082 -> 30004 bytes icons/obj/lavaland/artefacts.dmi | Bin 26261 -> 27176 bytes icons/obj/machines/defib_mount.dmi | Bin 534 -> 635 bytes icons/obj/machines/gateway.dmi | Bin 32649 -> 16139 bytes icons/obj/machines/prison.dmi | Bin 0 -> 4246 bytes icons/obj/machines/sheetifier.dmi | Bin 0 -> 2784 bytes icons/obj/musician.dmi | Bin 16662 -> 23120 bytes icons/obj/plushes.dmi | Bin 9366 -> 9888 bytes icons/obj/power.dmi | Bin 33936 -> 33879 bytes icons/obj/power_cond/layer_cable.dmi | Bin 2083 -> 2081 bytes icons/obj/radio.dmi | Bin 4507 -> 4585 bytes icons/obj/shards.dmi | Bin 3695 -> 4323 bytes icons/obj/stack_objects.dmi | Bin 49270 -> 52554 bytes icons/obj/stationobjs.dmi | Bin 80704 -> 81724 bytes icons/obj/stock_parts.dmi | Bin 19428 -> 19728 bytes icons/obj/storage.dmi | Bin 74352 -> 77091 bytes icons/obj/tiles.dmi | Bin 16836 -> 17851 bytes icons/obj/vending.dmi | Bin 104346 -> 108448 bytes icons/turf/areas.dmi | Bin 40764 -> 41636 bytes icons/turf/floors.dmi | Bin 316873 -> 317518 bytes icons/turf/walls/materialwall.dmi | Bin 0 -> 507 bytes .../ambience/antag/thatshowfamiliesworks.ogg | Bin 0 -> 108535 bytes sound/effects/cashregister.ogg | Bin 0 -> 20905 bytes sound/effects/families_police.ogg | Bin 0 -> 72528 bytes sound/effects/meatslap.ogg | Bin 0 -> 12414 bytes sound/misc/knuckles.ogg | Bin 0 -> 49391 bytes strings/boomer.json | 1 + strings/tips.txt | 6 +- strings/wisdoms.txt | 443 + tgstation.dme | 88 +- tgui/README.md | 1779 +- tgui/packages/common/collections.js | 25 + tgui/packages/common/timer.js | 23 + tgui/packages/tgui-dev-server/link/server.js | 9 +- tgui/packages/tgui/backend.js | 2 +- tgui/packages/tgui/byond.js | 10 +- tgui/packages/tgui/components/Box.js | 2 +- tgui/packages/tgui/components/Button.js | 6 +- tgui/packages/tgui/components/ByondUi.js | 154 + tgui/packages/tgui/components/Toast.js | 57 - tgui/packages/tgui/components/index.js | 6 +- tgui/packages/tgui/interfaces/AiRestorer.js | 87 + tgui/packages/tgui/interfaces/Bepis.js | 4 +- .../tgui/interfaces/BlackmarketUplink.js | 3 +- .../packages/tgui/interfaces/CameraConsole.js | 144 + tgui/packages/tgui/interfaces/Canvas.js | 2 +- .../tgui/interfaces/CargoHoldTerminal.js | 54 + .../tgui/interfaces/ExosuitControlConsole.js | 98 + tgui/packages/tgui/interfaces/Gateway.js | 78 + .../tgui/interfaces/GravityGenerator.js | 95 +- .../tgui/interfaces/GulagItemReclaimer.js | 17 +- tgui/packages/tgui/interfaces/HypnoChair.js | 2 +- tgui/packages/tgui/interfaces/KitchenSink.js | 29 +- tgui/packages/tgui/interfaces/LanguageMenu.js | 2 +- tgui/packages/tgui/interfaces/Launchpad.js | 2 +- tgui/packages/tgui/interfaces/MiningVendor.js | 8 +- tgui/packages/tgui/interfaces/NaniteRemote.js | 10 +- .../tgui/interfaces/NtosAiRestorer.js | 87 - tgui/packages/tgui/interfaces/NtosCard.js | 2 - .../tgui/interfaces/NtosConfiguration.js | 2 +- .../tgui/interfaces/NtosCrewManifest.js | 2 +- .../tgui/interfaces/OperatingComputer.js | 2 +- .../tgui/interfaces/ParticleAccelerator.js | 59 + .../tgui/interfaces/RemoteRobotControl.js | 66 + .../tgui/interfaces/RoboticsControlConsole.js | 165 + tgui/packages/tgui/interfaces/Roulette.js | 8 +- .../packages/tgui/interfaces/TransferValve.js | 6 +- tgui/packages/tgui/interfaces/Vending.js | 10 +- tgui/packages/tgui/layout.js | 18 +- tgui/packages/tgui/public/tgui.bundle.css | 2 +- tgui/packages/tgui/public/tgui.bundle.js | 4 +- tgui/packages/tgui/public/tgui.html | 5 +- tgui/packages/tgui/routes.js | 58 +- tgui/packages/tgui/store.js | 2 - .../tgui/styles/components/Button.scss | 2 +- .../tgui/styles/components/CameraConsole.scss | 54 + .../tgui/styles/components/Layout.scss | 13 +- .../tgui/styles/components/NtosWrapper.scss | 2 +- .../tgui/styles/components/ProgressBar.scss | 3 +- tgui/packages/tgui/styles/functions.scss | 35 +- tgui/packages/tgui/styles/main.scss | 5 +- tgui/packages/tgui/styles/themes/ntos.scss | 2 - tgui/packages/tgui/webpack.config.js | 22 +- tgui/yarn.lock | 2438 +- tools/mapmerge2/requirements.txt | 2 +- tools/travis/build_spaceman_dmm.sh | 0 waspstation/code/game/machinery/cryopod.dm | 2 +- .../modules/mob/living/carbon/human/human.dm | 10 +- .../simple_animal/friendly/drone/_drone.dm | 25 + .../code/modules/movespeed/modifiers/mobs.dm | 7 + .../modules/movespeed/modifiers/reagents.dm | 2 + .../code/modules/uplink/uplink_items.dm | 8 +- .../code/modules/vehicles/pimpin_ride.dm | 2 +- 1049 files changed, 112405 insertions(+), 11047 deletions(-) create mode 100644 .github/workflows/round_id_linker.yml create mode 100644 _maps/RandomRuins/SpaceRuins/forgottenship.dmm create mode 100644 _maps/map_files/BoxStation/job_changes.dm create mode 100644 _maps/map_files/Donutstation/Donutstation_LVL2.dmm create mode 100644 _maps/map_files/Donutstation/job_changes.dm create mode 100644 code/__DEFINES/~wasp_defines/_defines.dm create mode 100644 code/__DEFINES/~wasp_defines/bone_flags.dm create mode 100644 code/__DEFINES/~wasp_defines/jobs.dm rename code/__DEFINES/{wasp_defines => ~wasp_defines}/machines.dm (100%) rename code/__DEFINES/{wasp_defines => ~wasp_defines}/metacoin.dm (100%) create mode 100644 code/__DEFINES/~wasp_defines/movespeed_modification.dm rename code/__DEFINES/{wasp_defines => ~wasp_defines}/spacepods.dm (100%) create mode 100644 code/_globalvars/religion.dm delete mode 100644 code/_onclick/hud/lavaland_elite.dm delete mode 100644 code/_onclick/hud/slime.dm create mode 100644 code/datums/components/hot_ice.dm create mode 100644 code/datums/components/label.dm create mode 100644 code/datums/components/tackle.dm create mode 100644 code/datums/components/twohanded.dm create mode 100644 code/datums/elements/tool_flash.dm create mode 100644 code/datums/elements/undertile.dm create mode 100644 code/datums/materials/meat.dm create mode 100644 code/datums/skills/gaming.dm create mode 100644 code/game/gamemodes/gang/gang.dm create mode 100644 code/game/gamemodes/gang/gang_things.dm create mode 100644 code/game/machinery/prisonlabor.dm create mode 100644 code/game/machinery/sheetifier.dm create mode 100644 code/game/mecha/combat/five_stars.dm create mode 100644 code/game/objects/items/binoculars.dm create mode 100644 code/game/objects/items/broom.dm create mode 100644 code/game/objects/items/chainsaw.dm create mode 100644 code/game/objects/items/dualsaber.dm create mode 100644 code/game/objects/items/fireaxe.dm create mode 100644 code/game/objects/items/pitchfork.dm create mode 100644 code/game/objects/items/spear.dm create mode 100644 code/game/objects/items/stacks/license_plates.dm create mode 100644 code/game/objects/items/stacks/sheets/hot_ice.dm delete mode 100644 code/game/objects/items/twohanded.dm create mode 100644 code/game/turfs/closed/wall/material_walls.dm create mode 100644 code/game/turfs/open/floor/hull.dm create mode 100644 code/modules/antagonists/blob/blobstrains/distributed_neurons.dm delete mode 100644 code/modules/antagonists/blob/blobstrains/zombifying_pods.dm create mode 100644 code/modules/antagonists/gang/gang.dm create mode 100644 code/modules/antagonists/gang/outfits.dm create mode 100644 code/modules/clothing/gloves/tacklers.dm create mode 100644 code/modules/events/stray_cargo.dm create mode 100644 code/modules/events/wisdomcow.dm create mode 100644 code/modules/jobs/job_types/psychologist.dm create mode 100644 code/modules/lighting/emissive_blocker.dm create mode 100644 code/modules/mob/living/silicon/ai/robot_control.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/space_dragon.dm create mode 100644 code/modules/mob/mob_lists.dm delete mode 100644 code/modules/mob/mob_movespeed.dm create mode 100644 code/modules/movespeed/_movespeed_modifier.dm create mode 100644 code/modules/movespeed/modifiers/components.dm create mode 100644 code/modules/movespeed/modifiers/innate.dm create mode 100644 code/modules/movespeed/modifiers/items.dm create mode 100644 code/modules/movespeed/modifiers/misc.dm create mode 100644 code/modules/movespeed/modifiers/mobs.dm create mode 100644 code/modules/movespeed/modifiers/reagent.dm create mode 100644 code/modules/movespeed/modifiers/status_effects.dm create mode 100644 code/modules/religion/religion_sects.dm create mode 100644 code/modules/religion/religion_structures.dm create mode 100644 code/modules/religion/rites.dm create mode 100644 code/modules/ruins/spaceruin_code/forgottenship.dm create mode 100644 code/modules/spells/spell_types/blind.dm create mode 100644 code/modules/spells/spell_types/pointed.dm rename code/modules/surgery/{advanced => }/revival.dm (92%) create mode 100644 code/modules/unit_tests/bespoke_id.dm delete mode 100644 html/changelogs/AutoChangeLog-pr-49111.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49159.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49260.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49406.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49475.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49484.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49485.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49499.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49504.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49507.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49508.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49515.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49516.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49517.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49526.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49532.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49541.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49553.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49555.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49561.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49585.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49593.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49595.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49596.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-49606.yml create mode 100644 html/changelogs/AutoChangeLog-pr-50109.yml create mode 100644 html/changelogs/AutoChangeLog-pr-50116.yml create mode 100644 html/changelogs/AutoChangeLog-pr-50133.yml create mode 100644 icons/effects/blind_target.dmi create mode 100644 icons/materials/composite.dmi create mode 100644 icons/mecha/mecha_96x96.dmi create mode 100644 icons/mob/actions/actions_space_dragon.dmi delete mode 100644 icons/mob/monkey_held.dmi create mode 100644 icons/mob/pets_held.dmi create mode 100644 icons/mob/screen_changeling.dmi create mode 100644 icons/mob/screen_devil.dmi delete mode 100644 icons/mob/screen_elite.dmi delete mode 100644 icons/mob/screen_gen_old.dmi delete mode 100644 icons/mob/screen_slime.dmi create mode 100644 icons/obj/carp_rift.dmi create mode 100644 icons/obj/gang/actions.dmi create mode 100644 icons/obj/gang/signup_points.dmi create mode 100644 icons/obj/gang/tags.dmi create mode 100644 icons/obj/gang/wanted_160x32.dmi create mode 100644 icons/obj/gang/wanted_stars.dmi create mode 100644 icons/obj/machines/prison.dmi create mode 100644 icons/obj/machines/sheetifier.dmi create mode 100644 icons/turf/walls/materialwall.dmi create mode 100644 sound/ambience/antag/thatshowfamiliesworks.ogg create mode 100644 sound/effects/cashregister.ogg create mode 100644 sound/effects/families_police.ogg create mode 100644 sound/effects/meatslap.ogg create mode 100644 sound/misc/knuckles.ogg create mode 100644 strings/wisdoms.txt create mode 100644 tgui/packages/common/timer.js create mode 100644 tgui/packages/tgui/components/ByondUi.js delete mode 100644 tgui/packages/tgui/components/Toast.js create mode 100644 tgui/packages/tgui/interfaces/AiRestorer.js create mode 100644 tgui/packages/tgui/interfaces/CameraConsole.js create mode 100644 tgui/packages/tgui/interfaces/CargoHoldTerminal.js create mode 100644 tgui/packages/tgui/interfaces/ExosuitControlConsole.js create mode 100644 tgui/packages/tgui/interfaces/Gateway.js delete mode 100644 tgui/packages/tgui/interfaces/NtosAiRestorer.js create mode 100644 tgui/packages/tgui/interfaces/ParticleAccelerator.js create mode 100644 tgui/packages/tgui/interfaces/RemoteRobotControl.js create mode 100644 tgui/packages/tgui/interfaces/RoboticsControlConsole.js create mode 100644 tgui/packages/tgui/styles/components/CameraConsole.scss mode change 100755 => 100644 tools/travis/build_spaceman_dmm.sh create mode 100644 waspstation/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm create mode 100644 waspstation/code/modules/movespeed/modifiers/mobs.dm create mode 100644 waspstation/code/modules/movespeed/modifiers/reagents.dm diff --git a/.github/AUTODOC_GUIDE.md b/.github/AUTODOC_GUIDE.md index a17a8de3157..25b044a7949 100644 --- a/.github/AUTODOC_GUIDE.md +++ b/.github/AUTODOC_GUIDE.md @@ -32,7 +32,7 @@ All class level defined variables *must* be documented Internal functions *should* be documented, but may not be A public function is any function that a developer might reasonably call while using -or interating with your object. Internal functions are helper functions that your +or interacting with your object. Internal functions are helper functions that your public functions rely on to implement logic diff --git a/.github/workflows/round_id_linker.yml b/.github/workflows/round_id_linker.yml new file mode 100644 index 00000000000..cfb85052788 --- /dev/null +++ b/.github/workflows/round_id_linker.yml @@ -0,0 +1,12 @@ +name: "Round ID Linker" +on: + issues: + types: [opened] + +jobs: + link_rounds: + runs-on: ubuntu-latest + steps: + - uses: tgstation/round_linker@master + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 6ed819b22e9..0ca4d58b4c6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { "eslint.workingDirectories": [ - "./tgui-next" + "./tgui" ] } diff --git a/Dockerfile b/Dockerfile index 45ebdda9751..fcc4d7b5195 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,7 +40,7 @@ RUN apt-get install -y --no-install-recommends software-properties-common \ g++-7 \ libmariadb-client-lgpl-dev \ && git init \ - && git remote add origin https://github.com/tgstation/BSQL + && git remote add origin https://github.com/tgstation/BSQL COPY dependencies.sh . diff --git a/README.md b/README.md index 937cf33e188..9c511a4ee87 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,33 @@ -

WaspStation 13 Codebase

+# WaspStation 13 Codebase [![Build Status](https://api.travis-ci.com/WaspStation/WaspStation-1.0.svg?branch=master)](https://travis-ci.com/WaspStation/WaspStation-1.0) [![Krihelimeter](http://www.krihelinator.xyz/badge/WaspStation/WaspStation-1.0)](https://www.krihelinator.xyz) -[![Percentage of issues still open](http://isitmaintained.com/badge/open/waspstation/waspstation-1.0.svg)](https://isitmaintained.com/project/tgstation/tgstation "Percentage of issues still open") [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/waspstation/waspstation-1.0.svg)](https://isitmaintained.com/project/tgstation/tgstation "Average time to resolve an issue") ![Coverage](https://img.shields.io/badge/coverage---2%25-red.svg) -[![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://user-images.githubusercontent.com/8171642/50290880-ffef5500-043a-11e9-8270-a2e5b697c86c.png)[![forthebadge](https://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](https://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) +[![Percentage of issues still open](http://isitmaintained.com/badge/open/waspstation/waspstation-1.0.svg)](https://isitmaintained.com/project/waspstation/waspstation-1.0 "Percentage of issues still open") [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/waspstation/waspstation-1.0.svg)](https://isitmaintained.com/project/waspstation/waspstation-1.0 "Average time to resolve an issue") [![GitHub issues](https://img.shields.io/github/issues/waspstation/waspstation-1.0)](https://github.com/waspstation/waspstation-1.0/issues) ![GitHub top language](https://img.shields.io/github/languages/top/waspstation/waspstation-1.0) + +[![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://user-images.githubusercontent.com/8171642/50290880-ffef5500-043a-11e9-8270-a2e5b697c86c.png) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) * **Website:** TBA -* **Code:** https://github.com/WaspStation/WaspStation-1.0 -* **Mantis Discord:** https://discord.gg/husVWe8 -* **Boomer Discord:** https://discord.gg/BUM8uRc +* **Code:** +* **Mantis Discord:** +* **Boomer Discord:** +* **Coderbus Discord:** * **Wiki** TBA ## DOWNLOADING -There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at https://www.tgstation13.org/wiki/Downloading_the_source_code +There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at Option 1: -Follow this: https://www.tgstation13.org/wiki/Setting_up_git +Follow one of these: + +* +* Option 2: Download the source code as a zip by clicking the ZIP button in the -code tab of https://github.com/tgstation/tgstation +code tab of (note: this will use a lot of bandwidth if you wish to update and is a lot of hassle if you want to make any changes at all, so it's not recommended.) -Option 3: Download a pre-compiled nightly at https://tgstation13.download/nightlies/ (same caveats as option 2) +Option 3: Download a pre-compiled nightly at (same caveats as option 2) Option 4: Use our docker image that tracks the master branch (See commits for build status. Again, same caveats as option 2) @@ -33,7 +38,7 @@ docker run -d -p :1337 -v /path/to/your/config:/tgstation/config -v / ## INSTALLATION First-time installation should be fairly straightforward. First, you'll need -BYOND installed. You can get it from https://www.byond.com/download. Once you've done +BYOND installed. You can get it from Once you've done that, extract the game files to wherever you want to keep them. This is a sourcecode-only release, so the next step is to compile the server files. Open tgstation.dme by double-clicking it, open the Build menu, and click @@ -47,7 +52,7 @@ tgstation.dmb - 0 errors, 0 warnings If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong. If problems persist, ask for assistance -in https://discord.gg/Vh8TJp9 +in Once that's done, open up the config folder. You'll want to edit config.txt to set the probabilities for different gamemodes in Secret and to set your server @@ -83,19 +88,20 @@ you set up the SQL backend (see below). ## UPDATING -This is the codebase for the /tg/station flavoured fork of SpaceStation 13. +This is the codebase for the WaspStation flavoured fork of SpaceStation 13. Space Station 13 is a paranoia-laden round-based roleplaying game set against the backdrop of a nonsensical, metal death trap masquerading as a space station, with charming spritework designed to represent the sci-fi setting and its dangerous undertones. Have fun, and survive! ## HOSTING -If you'd like a more robust server hosting option for tgstation and its -derivatives. Check out our server tools suite at -https://github.com/tgstation/tgstation-server +If you'd like a more robust server hosting option for tgcode and its +derivatives. Check out the server tools suite at +. +otherwise, use DreamDaemon, which is included with your BYOND installation. ## MAPS -/tg/station currently comes equipped with five maps. +Waspstation currently comes equipped with five maps, with more on the way! * [BoxStation (default)](https://tgstation13.org/wiki/Boxstation) * [MetaStation](https://tgstation13.org/wiki/MetaStation) @@ -103,7 +109,6 @@ https://github.com/tgstation/tgstation-server * [PubbyStation](https://tgstation13.org/wiki/PubbyStation) * [DonutStation](https://tgstation13.org/wiki/Donutstation) - All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility. The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, BoxStation will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round. @@ -122,9 +127,9 @@ To enable an away mission open `config/awaymissionconfig.txt` and uncomment one ## SQL SETUP -The SQL backend requires a Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database +The SQL backend requires a Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: -If you are hosting a testing server on windows you can use a standalone version of MariaDB pre load with a blank (but initialized) tgdb database. Find them here: https://tgstation13.download/database/ Just unzip and run for a working (but insecure) database server. Includes a zipped copy of the data folder for easy resetting back to square one. +If you are hosting a testing server on windows you can use a standalone version of MariaDB pre load with a blank (but initialized) tgdb database. Find them here: Just unzip and run for a working (but insecure) database server. Includes a zipped copy of the data folder for easy resetting back to square one. ## WEB/CDN RESOURCE DELIVERY @@ -132,21 +137,22 @@ Web delivery of game resources makes it quicker for players to join and reduces 1. Edit compile_options.dm to set the `PRELOAD_RSC` define to `0` 1. Add a url to config/external_rsc_urls pointing to a .zip file containing the .rsc. - * If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at http://tgstation13.download/byond/tgstation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers. - * Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files. + * If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers. + * Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files. ## CONTRIBUTING [Documenting your code](.github/AUTODOC_GUIDE.md) ## CODEBASE CREDITS -- /tg/, for the codebase -- BeeStation, for the many QoL changes -- Oracle, for the inspiration and wonderful features and sprites -- Interstation for bridging the gap between Oracle and Modern /tg/ -- YogStation for multiple different features -- CEV Eris, for the PDA sprites -- Citadel, for their beautiful lighting + +* /tg/, for the codebase +* BeeStation, for the many QoL changes +* Oracle, for the inspiration and wonderful features and sprites +* Interstation for bridging the gap between Oracle and Modern /tg/ +* YogStation for multiple different features +* CEV Eris, for the PDA sprites +* Citadel, for their beautiful lighting And thank you to any other codebase not mentioned here that has been used in the code. Your wonderful contributions are known. diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index cb6c58f858c..dc0bffe8060 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -34,12 +34,12 @@ /turf/open/floor/plating, /area/ruin/powered/beach) "at" = ( -/mob/living/simple_animal/crab{ - name = "Eddie" - }, /obj/machinery/light{ dir = 1 }, +/mob/living/simple_animal/crab{ + name = "Eddie" + }, /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "au" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index f52556679d5..528d23bbd54 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -696,7 +696,7 @@ /area/lavaland/surface/outdoors) "bP" = ( /obj/structure/stone_tile/block, -/obj/item/twohanded/spear, +/obj/item/spear, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -868,7 +868,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ck" = ( -/obj/item/twohanded/spear, +/obj/item/spear, /obj/structure/stone_tile{ dir = 4 }, @@ -882,7 +882,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, -/obj/item/twohanded/spear, +/obj/item/spear, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -986,7 +986,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "cA" = ( @@ -1029,7 +1029,7 @@ dir = 1 }, /obj/structure/table/wood, -/obj/item/twohanded/spear, +/obj/item/spear, /obj/item/storage/belt, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) @@ -1072,7 +1072,7 @@ dir = 4 }, /obj/structure/table/wood, -/obj/item/twohanded/spear, +/obj/item/spear, /obj/item/scythe, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) @@ -1085,7 +1085,7 @@ dir = 8 }, /obj/structure/table/wood, -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "cN" = ( @@ -1100,7 +1100,7 @@ dir = 4 }, /obj/structure/table/wood, -/obj/item/twohanded/spear, +/obj/item/spear, /obj/item/clothing/head/helmet/roman/legionnaire, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index c3d576c5f0e..c5829ec31c5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -36,15 +36,16 @@ /turf/open/floor/plating, /area/ruin/powered/snow_biodome) "ai" = ( -/obj/machinery/shower, -/turf/open/floor/plating, +/obj/machinery/shower{ + pixel_y = 12 + }, +/turf/open/floor/plasteel/white, /area/ruin/powered/snow_biodome) "aj" = ( -/obj/structure/sink, -/obj/machinery/light/small{ - dir = 1 +/obj/structure/sink{ + pixel_y = 26 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/white, /area/ruin/powered/snow_biodome) "ak" = ( /turf/open/floor/plating/asteroid/snow, @@ -61,7 +62,7 @@ /obj/structure/toilet{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/white, /area/ruin/powered/snow_biodome) "ao" = ( /turf/open/floor/plating/ice, @@ -333,7 +334,7 @@ /turf/open/floor/pod/dark, /area/ruin/powered/snow_biodome) "KS" = ( -/obj/item/twohanded/required/chainsaw, +/obj/item/chainsaw, /obj/structure/closet, /obj/machinery/light/small{ dir = 4 @@ -387,6 +388,9 @@ /obj/structure/filingcabinet, /turf/open/floor/pod/dark, /area/ruin/powered/snow_biodome) +"UH" = ( +/turf/open/floor/plasteel/white, +/area/ruin/powered/snow_biodome) "UM" = ( /obj/machinery/computer/monitor/secret{ dir = 1 @@ -396,6 +400,10 @@ "Wg" = ( /turf/closed/wall/r_wall, /area/ruin/powered/snow_biodome) +"Zq" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/white, +/area/ruin/powered/snow_biodome) (1,1,1) = {" aa @@ -976,7 +984,7 @@ tb (19,1,1) = {" Wg ai -af +UH aq av bx @@ -1008,7 +1016,7 @@ tb (20,1,1) = {" Wg aj -af +Zq aq aq aq diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 773d90b1980..a7505619334 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -132,11 +132,11 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/arrivals) "aR" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, /obj/machinery/atmospherics/pipe/layer_manifold/visible{ dir = 4 }, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/engineering) "aW" = ( @@ -4107,10 +4107,6 @@ dir = 6; name = "N2 to Mix" }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer1{ - dir = 4; - name = "N2" - }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "lb" = ( @@ -4752,7 +4748,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/bar) "mu" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 064e5bea0c2..9c4c0e9d08f 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -350,6 +350,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/abandonedzoo) "be" = ( diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 241884d0a56..f89c86ab998 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -428,6 +428,7 @@ /obj/machinery/power/terminal{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/powerstorage) "bs" = ( diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 588b22a1256..858b65e4b41 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -1055,6 +1055,7 @@ /obj/machinery/power/terminal{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "ed" = ( diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm new file mode 100644 index 00000000000..671747103b8 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm @@ -0,0 +1,3448 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/basic, +/area/space) +"ab" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/ruin/unpowered/no_grav) +"ac" = ( +/obj/machinery/porta_turret/syndicate/energy{ + armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); + dir = 4; + name = "Syndicate Ship Turret"; + on = 0; + throw_speed = 4; + use_power = 1 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ad" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ae" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + name = "Syndicate ship airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"af" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/open/space/basic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ag" = ( +/obj/effect/mob_spawn/human/syndicatespace/captain, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ah" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ai" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aj" = ( +/obj/structure/table/optable, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ak" = ( +/obj/item/storage/backpack/duffelbag/syndie/surgery, +/obj/structure/table/reinforced, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"al" = ( +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"am" = ( +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"an" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ao" = ( +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ap" = ( +/turf/open/space/basic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aq" = ( +/obj/structure/sign/poster/contraband/syndicate_recruitment, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ar" = ( +/obj/machinery/camera/xray{ + c_tag = "Medbay"; + dir = 9; + name = "security camera"; + network = list("fsci"); + screen_loc = "" + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"as" = ( +/obj/structure/shuttle/engine/huge{ + dir = 8 + }, +/turf/open/space/basic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"at" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"au" = ( +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor{ + id = "fslockdown"; + name = "Ship blast door"; + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"av" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aw" = ( +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ax" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ay" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/coin/antagtoken, +/obj/item/coin/gold, +/obj/item/dnainjector/thermal, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"az" = ( +/obj/machinery/power/port_gen/pacman/super{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aA" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/aiModule/reset/purge, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aB" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aC" = ( +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1, +/obj/machinery/portable_atmospherics/scrubber{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aE" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/effect/spawner/lootdrop/armory_contraband/metastation, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aG" = ( +/obj/machinery/turretid{ + control_area = "/area/ruin/space/has_grav/syndicate_forgotten_ship"; + enabled = 0; + icon_state = "control_kill"; + lethal = 1; + name = "Ship turret control panel"; + pixel_y = 32; + req_access = null; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aI" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "fscaproom"; + name = "Room shutters control"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aK" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aL" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aM" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aN" = ( +/obj/item/stack/sheet/mineral/uranium{ + amount = 50 + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aO" = ( +/obj/machinery/light, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aP" = ( +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aQ" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aR" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/item/paper/fluff/ruins/forgottenship/powerissues, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aS" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aT" = ( +/obj/machinery/computer/camera_advanced/syndie{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aU" = ( +/obj/machinery/door/airlock/external{ + name = "Syndicate ship airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aV" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aW" = ( +/obj/structure/table/reinforced, +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"aX" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"aY" = ( +/turf/open/space/basic, +/area/ruin/unpowered/no_grav) +"aZ" = ( +/turf/closed/indestructible/syndicate, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"ba" = ( +/turf/closed/mineral/random, +/area/ruin/unpowered/no_grav) +"bb" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bc" = ( +/obj/machinery/light, +/mob/living/simple_animal/hostile/nanotrasen/ranged/assault, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bd" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/plasteel/twenty, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 50 + }, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"be" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "Syndicate ship airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bf" = ( +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Syndicate Cargo Pod APC"; + pixel_y = 32; + start_charge = 0 + }, +/obj/structure/cable, +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/circuitboard/machine/circuit_imprinter, +/obj/item/circuitboard/machine/protolathe, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/cable_coil, +/obj/item/circuitboard/computer/rdconsole, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/beakers, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bg" = ( +/obj/structure/sign/poster/contraband/syndicate_pistol, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bh" = ( +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bi" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/structure/closet/crate/secure/engineering{ + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bj" = ( +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bk" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "fslockdown"; + name = "Window shutters"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bl" = ( +/obj/machinery/ore_silo, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bm" = ( +/obj/machinery/mineral/ore_redemption{ + name = "Syndicate ore redemption machine"; + ore_multiplier = 4; + ore_pickup_rate = 20; + req_access = list(150) + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bn" = ( +/obj/structure/table/reinforced, +/obj/item/paper, +/obj/item/pen, +/obj/machinery/light, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bo" = ( +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bp" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/mining_scanner, +/obj/item/pickaxe/drill, +/obj/item/storage/bag/ore, +/obj/item/storage/bag/ore, +/obj/item/pickaxe/drill, +/obj/item/mining_scanner, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bq" = ( +/turf/closed/mineral/random/high_chance, +/area/ruin/unpowered/no_grav) +"br" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bs" = ( +/turf/closed/mineral, +/area/ruin/unpowered/no_grav) +"bt" = ( +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bu" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/toy/nuke, +/obj/item/clothing/under/chameleon, +/obj/item/pda/chameleon, +/obj/item/clothing/mask/chameleon, +/obj/item/card/id/syndicate/anyone, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bv" = ( +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Syndicate Forgotten Ship APC"; + pixel_y = 32; + start_charge = 0 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bw" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/crowbar/red, +/obj/item/ammo_box/magazine/pistolm9mm, +/obj/item/ammo_box/magazine/pistolm9mm, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bx" = ( +/obj/machinery/door/airlock/grunge{ + name = "Captain's room"; + req_one_access_txt = "150" + }, +/obj/machinery/door/poddoor{ + id = "fscaproom"; + name = "Captain's blast door"; + state_open = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"by" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bz" = ( +/obj/structure/table/reinforced, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bA" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/clothing/suit/space/hardsuit/cybersun, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"bB" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/melee/transforming/energy/sword/saber/red, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"bC" = ( +/obj/structure/closet/crate/medical, +/obj/item/stack/medical/bruise_pack{ + amount = 12 + }, +/obj/item/stack/medical/ointment{ + amount = 12 + }, +/obj/item/healthanalyzer/advanced, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bD" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bE" = ( +/obj/effect/mob_spawn/human/syndicatespace, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bF" = ( +/obj/machinery/door/airlock/external{ + name = "Syndicate ship airlock"; + req_one_access_txt = "150" + }, +/obj/structure/cable, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bG" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/obj/structure/mirror{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bH" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bI" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bJ" = ( +/obj/machinery/suit_storage_unit/syndicate{ + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black; + suit_type = /obj/item/clothing/suit/space/syndicate/black + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bK" = ( +/obj/machinery/suit_storage_unit/syndicate{ + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black; + suit_type = /obj/item/clothing/suit/space/syndicate/black + }, +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bL" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bM" = ( +/obj/structure/cable, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + name = "Syndicate ship airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bN" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) +"bO" = ( +/obj/structure/bodycontainer/crematorium{ + id = "fscremate" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bP" = ( +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bQ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bR" = ( +/obj/structure/sign/poster/contraband/tools, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bS" = ( +/obj/machinery/button/crematorium{ + id = "fscremate"; + pixel_x = -32 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bT" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/interrogation{ + name = "Cameras monitor"; + network = list("fsci"); + req_one_access_txt = "150"; + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bU" = ( +/obj/machinery/light, +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bV" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bW" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bX" = ( +/obj/structure/sign/poster/contraband/c20r, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"bY" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/crowbar/red, +/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/m10mm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"bZ" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ca" = ( +/obj/machinery/computer/crew/syndie{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cb" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cc" = ( +/obj/structure/chair/comfy, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cd" = ( +/obj/machinery/light, +/mob/living/simple_animal/hostile/nanotrasen/ranged/assault, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ce" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/ammo_box/c10mm, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cf" = ( +/obj/structure/displaycase{ + req_one_access_txt = "150"; + start_showpiece_type = /obj/item/gun/ballistic/automatic/pistol/deagle/camo + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cg" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ch" = ( +/obj/machinery/door/airlock/grunge{ + name = "Captain's room"; + req_one_access_txt = "150" + }, +/obj/machinery/door/poddoor{ + id = "fscaproom"; + name = "Captain's blast door"; + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ci" = ( +/obj/machinery/porta_turret/syndicate/energy{ + armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); + dir = 4; + name = "Syndicate Ship Turret"; + on = 0; + throw_speed = 4; + use_power = 1 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cj" = ( +/obj/machinery/stasis, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ck" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"cl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/aiModule/core/freeformcore, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cm" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cn" = ( +/obj/machinery/recharge_station, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"co" = ( +/obj/structure/filingcabinet, +/obj/machinery/door/window{ + dir = 8; + name = "Syndicate interior door"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cp" = ( +/obj/machinery/door/window{ + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 70, "acid" = 100); + name = "Control room"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cq" = ( +/obj/machinery/door/airlock/grunge{ + name = "Bridge"; + req_one_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cr" = ( +/obj/machinery/vending/cigarette/syndicate, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cs" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/toy/sword, +/obj/item/toy/balloon/syndicate, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"ct" = ( +/obj/machinery/vending/medical/syndicate_access{ + premium = list(/obj/item/reagent_containers/medigel/synthflesh = 2, /obj/item/storage/pill_bottle/psicodine = 2, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, /obj/item/storage/firstaid = 5, /obj/item/storage/firstaid/advanced = 2, /obj/item/storage/firstaid/tactical = 1, /obj/item/shears = 1, /obj/item/plunger/reinforced = 2) + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cu" = ( +/obj/machinery/computer/security{ + desc = "Used to access interrogation room camera."; + dir = 8; + name = "Ship cameras console"; + network = list("fsc","fsci"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cw" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/switchblade, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"cx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/obj/item/wrench, +/mob/living/simple_animal/hostile/nanotrasen/ranged/assault, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cz" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 50 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 20 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"cA" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cG" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cJ" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Spare equipment"; + req_one_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cK" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cM" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cN" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cO" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cP" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cQ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/mob/living/simple_animal/hostile/nanotrasen/elite, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cU" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cV" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cX" = ( +/obj/machinery/camera/xray{ + c_tag = "Conference room"; + dir = 8; + name = "security camera"; + network = list("fsc"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cY" = ( +/obj/effect/mob_spawn/human/syndicatespace, +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"cZ" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/plasteel/dark/side{ + dir = 1 + }, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"da" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/c10mm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"db" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dc" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dd" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/codespeak_manual/unlimited, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"de" = ( +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"df" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/under/syndicate/skirt, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dg" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60); + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_one_access_txt = "150"; + secure = 1 + }, +/obj/item/clothing/head/HoS/beret/syndicate, +/obj/item/clothing/suit/armor/vest/capcarapace/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/under/syndicate/skirt, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dh" = ( +/obj/machinery/camera/xray{ + c_tag = "Cargo pod"; + dir = 6; + name = "security camera"; + network = list("fsci"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_cargopod) +"di" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/disk/surgery/forgottenship, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"dj" = ( +/turf/closed/mineral/random/high_chance, +/area/space) +"dk" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/effect/spawner/lootdrop/donkpockets, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dl" = ( +/obj/machinery/door/password/voice/sfc{ + password = null + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/grunge{ + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 90); + desc = "Vault airlock preventing air from going out."; + name = "Syndicate Vault Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"dm" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/stack/ore/diamond{ + amount = 3 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dn" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock"; + req_one_access_txt = "150" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"do" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 50 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 50 + }, +/obj/machinery/light, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault) +"dp" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/item/stack/ore/plasma{ + amount = 19 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dq" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dr" = ( +/obj/structure/table/reinforced, +/obj/item/paper/fluff/ruins/forgottenship/missionobj, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"ds" = ( +/obj/structure/closet/crate/secure/gear{ + req_one_access_txt = "150" + }, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) +"dt" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/syndicate_forgotten_ship) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ap +ap +as +aa +aa +ap +ap +as +aa +aa +ap +ap +as +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ap +ap +ap +aa +aa +ap +ap +ap +aa +aa +ap +ap +ap +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +af +ap +ap +ap +af +af +ap +ap +ap +af +af +ap +ap +ap +af +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +ci +bZ +dk +dt +al +al +dm +dt +al +dp +dq +al +al +dt +ds +bZ +ci +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +bZ +bZ +bZ +bZ +bZ +dn +bZ +bZ +bZ +dn +bZ +bZ +bZ +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aY +aY +aY +aY +aY +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +bZ +bV +bZ +ag +bw +bZ +av +aR +az +bZ +bz +bD +al +bY +al +bZ +aa +aa +aa +aa +aa +aa +aY +aY +aY +ba +bq +ba +aY +aY +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +aA +aw +bZ +ao +aO +bZ +aN +cC +bc +bZ +bY +bE +al +al +cY +bZ +aa +aa +aa +aa +aa +aY +aY +ba +ba +ba +ba +ba +ba +aY +aY +aa +aa +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +cf +aw +ch +ao +ao +bx +aH +cD +cU +by +al +al +al +cc +dr +bZ +aa +aa +aa +aa +aY +aY +ba +ba +aZ +aZ +aZ +aZ +ba +ba +aY +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +ay +aw +bZ +ao +ao +bx +aS +cx +aS +by +al +al +al +cc +da +bZ +aa +aa +aa +aY +aY +ba +ba +aZ +aZ +bA +bA +aZ +aZ +ba +aY +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +cl +aw +bZ +aB +bn +bZ +cy +cE +cV +bZ +bY +bE +al +al +cY +bZ +aa +aa +aa +aY +ba +ba +ba +aZ +bd +de +de +cz +aZ +ba +aY +aY +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +ac +bZ +co +bZ +aI +bT +bg +aD +cF +cM +bZ +ah +bD +al +bY +bZ +ac +aa +aa +aa +aY +ba +bq +ba +aZ +bB +de +de +do +aZ +ba +bq +aY +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +bZ +bZ +bZ +bZ +cG +bZ +bZ +bZ +bZ +bZ +bZ +bZ +aa +aa +aa +aa +aY +aY +ba +ba +aZ +dd +de +de +di +aZ +ba +ba +aY +aY +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +ad +am +am +ct +bZ +al +cH +al +bZ +bG +bI +cZ +db +bZ +aa +aa +aa +aa +aY +ba +ba +ba +aZ +aZ +dl +aZ +aZ +aZ +ba +ba +ba +aY +aY +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +aj +am +am +cj +bZ +aJ +cI +aC +bZ +bH +cd +bZ +bZ +bZ +aa +aa +aa +aa +aY +ba +ba +bq +bb +bb +bj +bl +bb +bb +ba +ba +ba +ba +aY +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +ak +ar +am +am +cm +cv +cW +al +aQ +bI +bI +cZ +dc +bZ +aa +aa +aa +aa +aY +aY +ba +ba +bX +aX +bj +bj +bo +bb +ba +ba +aY +aY +aY +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +ci +bZ +bZ +bZ +bZ +bZ +bZ +bZ +cK +bZ +bZ +bZ +bZ +bZ +bZ +bZ +ci +aa +aa +aa +aa +aY +ba +ba +bb +dh +bj +bm +bj +bb +ba +aY +aY +aY +aY +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +bO +bS +bZ +bv +aP +aK +aP +cH +aP +aK +aP +al +bZ +al +bJ +bZ +aa +aa +aa +aa +aY +aY +ba +bb +bf +bh +bj +bj +bb +bs +ba +ba +ba +aY +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +ai +al +bZ +bP +al +ax +ax +cN +ax +ax +aP +al +bZ +al +bK +bZ +aa +aa +aa +aa +aa +aY +aY +bR +bp +bh +bj +bC +bb +bq +ba +ba +aY +aY +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +ae +al +al +aU +al +at +ah +aM +cO +ah +ah +bQ +aP +be +aP +aP +bM +bN +bN +bN +bN +bN +ab +ab +bF +bh +bh +bj +bu +bb +ba +ba +aY +aY +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +ai +al +an +al +at +ah +cA +cP +ah +ah +aL +al +an +al +bK +bZ +aa +aa +aa +aa +aa +aY +aY +ck +bi +bj +bj +bU +bb +ba +ba +aY +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +cn +al +bZ +al +al +al +ah +cQ +ah +al +al +al +bZ +al +bL +bZ +aa +aa +aa +aa +aY +aY +ba +bb +bb +cs +cw +bb +bb +ba +ba +aY +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +ac +bZ +ah +bZ +cr +al +aF +al +cR +cX +aF +al +al +bZ +ah +bZ +ac +aa +aa +aa +aa +aY +ba +ba +ba +bb +bb +bb +bb +ba +ba +bq +aY +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +bZ +bZ +bZ +bZ +cq +bZ +bZ +bZ +bZ +bZ +bZ +bZ +aa +aa +aa +aa +aa +aY +aY +ba +ba +ba +ba +bq +ba +ba +ba +aY +aY +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aq +aE +ce +bW +aw +cS +aw +bW +cg +ce +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aY +aY +bq +ba +ba +ba +ba +ba +aY +aY +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +bZ +aw +aw +aw +aw +cS +aw +aw +aw +aw +bZ +bZ +bZ +bZ +aa +aa +aa +aa +aa +aa +aY +aY +aY +aY +aY +aY +aY +aY +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +aG +aw +bZ +aw +aw +aw +cB +cT +aw +aw +aw +aw +bZ +df +df +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +bZ +br +aw +cp +aw +aV +aw +aV +cL +aV +aw +aV +aw +cJ +aw +bt +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +ac +bZ +aw +bZ +aw +cu +aw +aT +aw +ca +aw +cb +aw +bZ +dg +bZ +ac +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +bZ +bZ +bZ +aw +aw +aw +aw +aw +aw +aw +aw +aw +bZ +bZ +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +bZ +bZ +bV +bV +aW +bV +bk +bV +bV +bV +bV +bZ +bZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +au +au +au +au +au +au +au +au +au +ac +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +dj +aa +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +aa +aa +aa +aa +aa +aa +aa +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +dj +dj +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm index 9a13ade8174..1c927754a9b 100644 --- a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm +++ b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm @@ -180,6 +180,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/plasteel, /area/ruin/space/has_grav/gasthelizard) "u" = ( diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm index 6e973667359..e00561e9c2b 100644 --- a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm +++ b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm @@ -75,7 +75,9 @@ /area/ruin/space/has_grav/hellfactoryoffice) "ak" = ( /obj/machinery/atmospherics/components/unary/tank/oxygen{ - gas_type = /datum/gas/water_vapor + dir = 8; + gas_type = /datum/gas/water_vapor; + initialize_directions = 8 }, /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/hellfactoryoffice) @@ -161,7 +163,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/turf/closed/wall, +/turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "ax" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ @@ -834,6 +836,7 @@ /obj/effect/turf_decal{ dir = 5 }, +/obj/structure/fluff/broken_flooring, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) "cz" = ( @@ -851,10 +854,6 @@ /obj/item/stack/tile/plasteel, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) -"cC" = ( -/obj/structure/sign/warning/vacuum, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) "cD" = ( /obj/structure/ore_box, /obj/effect/turf_decal/delivery/white, @@ -978,7 +977,7 @@ "lR" = ( /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "nT" = ( /obj/structure/rack, @@ -1005,17 +1004,24 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "rC" = ( /obj/structure/sign/poster/random, /turf/closed/wall/rust, /area/ruin/space/has_grav/hellfactory) +"tt" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) +"tN" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) "uL" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "wv" = ( /obj/machinery/power/apc/highcap/ten_k{ @@ -1030,6 +1036,11 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/holofloor/wood, /area/ruin/space/has_grav/hellfactory) +"yM" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/stack/sheet/mineral/plasma, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) "zI" = ( /obj/structure/cable, /turf/closed/wall/r_wall/rust, @@ -1037,7 +1048,7 @@ "BC" = ( /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "EP" = ( /obj/structure/cable, @@ -1058,6 +1069,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/checker, /area/ruin/space/has_grav/hellfactory) +"Ld" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) "Mv" = ( /obj/structure/sign/poster/random, /turf/closed/wall, @@ -1095,6 +1110,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) +"WZ" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) (1,1,1) = {" aa @@ -1355,8 +1374,8 @@ cV by Wh BC -by -Wh +tt +Ld ry by by @@ -1373,7 +1392,7 @@ ah al ao aG -ao +tN ah bg aA @@ -1381,10 +1400,10 @@ bL aA Wh Wh +tt by by -by -by +tt Wh by cw @@ -1409,8 +1428,8 @@ by by by lR -by -by +tt +tt uL by Wh @@ -1481,7 +1500,7 @@ ah ap ao aK -ao +tN ah aA bn @@ -1548,9 +1567,9 @@ zI EP zI lv -cr +yM cA -cC +by ab aa aa @@ -1578,7 +1597,7 @@ aL cr cB cL -ab +WZ aa aa "} diff --git a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm index c9c50ff1428..bf9792d97bc 100644 --- a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm +++ b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm @@ -165,7 +165,7 @@ /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/hilbertresearchfacility) "D" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/hilbertresearchfacility) "E" = ( diff --git a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm index 9bb394663ad..d41de462c97 100644 --- a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm +++ b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -73,7 +73,7 @@ /area/ruin/space/has_grav/powered/authorship) "o" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/mineral/titanium/purple, /area/ruin/space/has_grav/powered/authorship) "p" = ( diff --git a/_maps/RandomRuins/SpaceRuins/kinggoatarena.dmm b/_maps/RandomRuins/SpaceRuins/kinggoatarena.dmm index 2473abd136f..82848780f5b 100644 --- a/_maps/RandomRuins/SpaceRuins/kinggoatarena.dmm +++ b/_maps/RandomRuins/SpaceRuins/kinggoatarena.dmm @@ -15,10 +15,8 @@ /turf/open/indestructible/diamond, /area/ruin/powered/kinggoat_arena) "e" = ( -/obj/effect/portal/permanent/one_way/destroy{ - id = "king goat arena"; - name = "king goat arena portal"; - teleport_channel = "free" +/obj/effect/landmark/portal_exit{ + id = "king goat arena" }, /turf/open/indestructible/diamond, /area/ruin/powered/kinggoat_arena) @@ -49,7 +47,7 @@ /turf/open/indestructible/gold, /area/ruin/powered/kinggoat_arena) "j" = ( -/obj/effect/portal/permanent/one_way/keep{ +/obj/effect/portal/permanent/one_way{ id = "king goat arena"; name = "king goat arena portal"; teleport_channel = "free" diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index 27e69a18d86..1e7ca9f9848 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -24,7 +24,7 @@ pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "af" = ( diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index 1f368a401a2..6a1767fe75d 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -185,7 +185,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "aF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -294,7 +294,7 @@ /area/ruin/space/has_grav/powered/cat_man) "aV" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -550,7 +550,7 @@ /area/ruin/space/has_grav/powered/cat_man) "bF" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index c7892552d13..d782c50aa4d 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -270,7 +270,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/cobweb, @@ -675,7 +675,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /turf/open/floor/plasteel, @@ -727,7 +727,7 @@ /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/ancientstation/proto) "bW" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/dirt, @@ -1237,7 +1237,7 @@ /area/ruin/space/has_grav/ancientstation) "dn" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/machinery/light/small{ @@ -1289,7 +1289,7 @@ /area/ruin/space/has_grav/ancientstation/hydroponics) "ds" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/machinery/light/small{ @@ -4116,7 +4116,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/ancientstation) "jJ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/dirt, @@ -6052,7 +6052,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/ancientstation/deltacorridor) "od" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/dirt, @@ -6140,7 +6140,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/ancientstation/rnd) "om" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/dirt, @@ -6204,7 +6204,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/ancientstation/deltacorridor) "ow" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/cobweb, @@ -7383,7 +7383,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/ancientstation/comm) "PV" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index f59604d5c8c..03b20c16953 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -93,7 +93,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_3) "aD" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02" }, /turf/open/floor/wood, @@ -133,7 +133,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_4) "aL" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/wood, @@ -173,7 +173,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_5) "aT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/wood, @@ -213,7 +213,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_6) "bb" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /turf/open/floor/wood, @@ -969,7 +969,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_2) "dq" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/wood, @@ -1026,7 +1026,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_1) "dy" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /turf/open/floor/wood, @@ -1652,7 +1652,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/hotel/bar) "fI" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -1832,7 +1832,7 @@ }, /area/ruin/space/has_grav/hotel/dock) "gh" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/wood, @@ -2228,7 +2228,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "hq" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /turf/open/floor/plasteel/dark, @@ -2744,7 +2744,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/hotel/power) "iM" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel) "iN" = ( @@ -4352,7 +4352,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hotel/pool) "mD" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-25" }, /obj/effect/turf_decal/tile/neutral{ diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 7b0f7df9201..7bdb3072b98 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -2648,30 +2648,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/awaymission/academy/academygate) -"km" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"kn" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"ko" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"kp" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) "kq" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -2682,29 +2658,6 @@ /mob/living/simple_animal/hostile/wizard, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) -"kr" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"ks" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"kt" = ( -/obj/machinery/gateway, -/obj/structure/cable, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) -"ku" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/turf/open/floor/plating, -/area/awaymission/academy/academygate) "kv" = ( /obj/machinery/light, /turf/open/floor/carpet, @@ -2775,7 +2728,7 @@ /turf/open/floor/plasteel/cafeteria, /area/awaymission/academy/academyaft) "kI" = ( -/obj/machinery/gateway/centeraway, +/obj/machinery/gateway/away, /obj/structure/cable, /turf/open/floor/plating, /area/awaymission/academy/academygate) @@ -12010,9 +11963,9 @@ jZ jU ke ke -km -kp -ks +kf +kf +kf ke kf ky @@ -12140,9 +12093,9 @@ jY jU jW kf -kn +kf kI -kt +ke ke kf ky @@ -12270,9 +12223,9 @@ jY jU jW kf -ko -kr -ku +kf +kf +kf kf kf ky diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index de5896202d2..40fa15ec4e3 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -643,24 +643,6 @@ /obj/machinery/processor, /turf/open/floor/plasteel/freezer, /area/awaymission/cabin) -"cb" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) -"cc" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) -"cd" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) "ce" = ( /obj/structure/chair/wood{ dir = 4 @@ -743,20 +725,8 @@ "cn" = ( /turf/open/lava, /area/awaymission/cabin/caves/mountain) -"co" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) "cp" = ( -/obj/machinery/gateway/centeraway, -/turf/open/floor/wood, -/area/awaymission/cabin) -"cq" = ( -/obj/machinery/gateway{ - dir = 4 - }, +/obj/machinery/gateway/away, /turf/open/floor/wood, /area/awaymission/cabin) "cr" = ( @@ -797,23 +767,6 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/cabin) -"cw" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) -"cx" = ( -/obj/machinery/gateway, -/obj/structure/cable, -/turf/open/floor/wood, -/area/awaymission/cabin) -"cy" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/turf/open/floor/wood, -/area/awaymission/cabin) "cz" = ( /obj/machinery/light{ dir = 1 @@ -1493,7 +1446,7 @@ /area/awaymission/cabin/snowforest) "eA" = ( /obj/structure/table/wood, -/obj/item/twohanded/required/chainsaw, +/obj/item/chainsaw, /turf/open/floor/wood/cold, /area/awaymission/cabin/lumbermill) "eB" = ( @@ -4501,7 +4454,7 @@ /area/awaymission/cabin/caves) "lr" = ( /obj/effect/decal/cleanable/blood/old, -/obj/item/kitchen/knife/carrotshiv, +/obj/item/kitchen/knife/shiv/carrot, /obj/effect/decal/cleanable/glitter/blue{ desc = "It looks like fancy glitter to me."; name = "icy wind" @@ -35822,9 +35775,9 @@ an bk bJ an -cb -co -cw +aq +aq +aq eg cH cQ @@ -36079,9 +36032,9 @@ an nU an an -cc +aq cp -cx +eg eg aq cQ @@ -36336,9 +36289,9 @@ an jf ay an -cd -cq -cy +aq +aq +aq eg cH cQ diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 5252ff3af74..032492a31ec 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -224,63 +224,13 @@ /mob/living/simple_animal/crab, /turf/open/floor/plating/beach/sand, /area/awaymission/beach) -"aL" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 9 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) -"aM" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) -"aN" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 5 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) "aO" = ( /obj/effect/baseturf_helper/beach/sand, /turf/open/floor/plating/beach/sand, /area/awaymission/beach) -"aP" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 8 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) "aQ" = ( -/obj/machinery/gateway/centeraway, -/obj/effect/turf_decal/sand, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) -"aR" = ( -/obj/machinery/gateway{ - dir = 4 - }, +/obj/machinery/gateway/away, /obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 - }, /turf/open/floor/plating/beach/sand, /area/awaymission/beach) "aS" = ( @@ -295,32 +245,6 @@ dir = 8 }, /area/awaymission/beach) -"aU" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 10 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) -"aV" = ( -/obj/machinery/gateway, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) -"aW" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 6 - }, -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) "aX" = ( /turf/closed/wall/mineral/sandstone, /area/awaymission/beach) @@ -6908,9 +6832,9 @@ ak ak ak ak -aL -aP -aU +bf +bp +bx ak ak ba @@ -7015,9 +6939,9 @@ ak ak ak ak -aM +bg aQ -aV +by ba ba ba @@ -7122,9 +7046,9 @@ ak ak ak ak -aN -aR -aW +bh +br +bz ak ak ak diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index 9630a1b162b..8172b4435d5 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -392,54 +392,14 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_three) -"bi" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) -"bj" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) -"bk" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) -"bl" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) "bm" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /turf/open/floor/engine/cult{ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_four) -"bn" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) "bo" = ( /obj/structure/flora/rock, /obj/item/soulstone/anybody, @@ -447,28 +407,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_three) -"bp" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) -"bq" = ( -/obj/machinery/gateway, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) -"br" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/turf/open/floor/engine/cult{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_four) "bs" = ( /obj/structure/trap/stun{ desc = "A rune inscribed in the floor, the air feeling electrified around it."; @@ -511,7 +449,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_three) "by" = ( -/obj/item/twohanded/mjollnir, +/obj/item/mjollnir, /mob/living/simple_animal/hostile/poison/giant_spider/nurse, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" @@ -58099,9 +58037,9 @@ ao ao ao bf -bi -bl -bp +ao +ao +ao aw ao bz @@ -58356,9 +58294,9 @@ ao ao bf ap -bj +ao bm -bq +ao bf bw bA @@ -58613,9 +58551,9 @@ ao ao ao bf -bk -bn -br +ao +ao +ao ao ao bz diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index 3fd422e6ec4..8e8eb46c5d6 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -882,110 +882,13 @@ }, /turf/open/floor/plating, /area/awaymission/challenge/end) -"cR" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) -"cS" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) -"cT" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) -"cV" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) "cW" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /turf/open/floor/plasteel/dark, /area/awaymission/challenge/end) -"cX" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) -"cY" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) "cZ" = ( -/obj/machinery/gateway, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -999,22 +902,6 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/awaymission/challenge/end) -"da" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/challenge/end) "db" = ( /obj/structure/window/reinforced, /turf/open/floor/circuit, @@ -29035,9 +28922,9 @@ cd cn cH cN -cR -cV -cY +co +co +co db dg cd @@ -29292,7 +29179,7 @@ cd cn cH cN -cS +co cW cZ dc @@ -29549,9 +29436,9 @@ cd cn cH cN -cT -cX -da +co +co +co db dh cd diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 5a21ab69802..6b69cb6ce77 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -181,45 +181,6 @@ }, /area/awaymission/moonoutpost19/syndicate) "aG" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/syndicate) -"aH" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/syndicate) -"aI" = ( -/obj/machinery/gateway{ - dir = 5 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -270,26 +231,8 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/syndicate) -"aO" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/syndicate) "aP" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /obj/structure/cable, @@ -297,24 +240,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/syndicate) -"aQ" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/syndicate) "aR" = ( /obj/machinery/light{ dir = 4 @@ -357,26 +282,7 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/syndicate) -"aW" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/syndicate) "aX" = ( -/obj/machinery/gateway, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -393,9 +299,6 @@ }, /area/awaymission/moonoutpost19/syndicate) "aY" = ( -/obj/machinery/gateway{ - dir = 6 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -2178,8 +2081,7 @@ /area/awaymission/moonoutpost19/research) "ex" = ( /obj/machinery/atmospherics/pipe/manifold{ - dir = 4; - level = 2 + dir = 4 }, /obj/structure/cable, /turf/open/floor/plasteel/white, @@ -4476,7 +4378,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "jq" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ desc = "A plastic potted plant."; pixel_y = 3 }, @@ -6626,7 +6528,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "ob" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ desc = "A plastic potted plant."; pixel_y = 3 }, @@ -41596,8 +41498,8 @@ ac at az aG -aO -aW +aG +aG aV br bB @@ -41852,7 +41754,7 @@ ac ac at aA -aH +aG aP aX bg @@ -42109,8 +42011,8 @@ ac ac at aB -aI -aQ +aG +aG aY bh bt diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 673f5307b92..18bc45257ff 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -117,7 +117,7 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/engineering) "ax" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-20"; pixel_y = 3 }, @@ -548,27 +548,18 @@ /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bA" = ( -/obj/machinery/gateway{ - dir = 9 - }, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bB" = ( -/obj/machinery/gateway{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bC" = ( -/obj/machinery/gateway{ - dir = 5 - }, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -718,25 +709,19 @@ /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bS" = ( -/obj/machinery/gateway{ - dir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bT" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bU" = ( -/obj/machinery/gateway{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -785,25 +770,18 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/engineering) "bY" = ( -/obj/machinery/gateway{ - dir = 10 - }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bZ" = ( -/obj/machinery/gateway, /obj/effect/landmark/awaystart, /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "ca" = ( -/obj/machinery/gateway{ - dir = 6 - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -1662,7 +1640,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) "dN" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/effect/turf_decal/tile/purple{ @@ -3692,7 +3670,7 @@ /turf/open/floor/plasteel, /area/awaymission/research/interior/genetics) "hV" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/purple{ @@ -3800,7 +3778,7 @@ /turf/open/floor/plasteel, /area/awaymission/research/interior/security) "ii" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ desc = "A potted plant, it doesn't look very healthy..."; name = "dead potted plant" }, @@ -4238,7 +4216,7 @@ /turf/open/floor/wood, /area/awaymission/research/interior/dorm) "jm" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /turf/open/floor/plasteel/yellowsiding{ @@ -4879,7 +4857,7 @@ /turf/open/floor/plating, /area/awaymission/research/interior/medbay) "kC" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/yellowsiding{ @@ -5253,7 +5231,7 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/medbay) "ly" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel/yellowsiding{ @@ -5721,7 +5699,7 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/escapepods) "mJ" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/green{ dir = 1 }, @@ -5758,7 +5736,7 @@ /turf/open/floor/grass, /area/awaymission/research/interior/escapepods) "mN" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/tile/green, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 3904e94309c..3e1da182f57 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -2429,23 +2429,6 @@ /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) "fG" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/gateway) -"fH" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/gateway) -"fI" = ( -/obj/machinery/gateway{ - dir = 5 - }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) @@ -2793,15 +2776,12 @@ /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) "gw" = ( -/obj/machinery/gateway{ - dir = 8 - }, /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) "gx" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /obj/effect/turf_decal/bot, @@ -2809,13 +2789,6 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) -"gy" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/gateway) "gz" = ( /obj/machinery/light/broken{ dir = 4 @@ -3143,25 +3116,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) -"hl" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/gateway) "hm" = ( -/obj/machinery/gateway, /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/gateway) "hn" = ( -/obj/machinery/gateway{ - dir = 6 - }, /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -25754,7 +25715,7 @@ en fh fG gw -hl +gw hR iA ju @@ -26009,7 +25970,7 @@ bE dK eo fh -fH +fG gx hm hS @@ -26266,8 +26227,8 @@ dk dK ep fh -fI -gy +fG +fG hn hT iC diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index eadb2d9ae34..d2d511fc287 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -944,24 +944,6 @@ }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) -"ec" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) -"ed" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) -"ee" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) "ef" = ( /mob/living/simple_animal/hostile/syndicate/melee/spacebattle, /turf/open/floor/mineral/plastitanium/red, @@ -999,24 +981,12 @@ "el" = ( /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) -"em" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) "en" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) -"eo" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) "ep" = ( /obj/structure/chair{ dir = 1 @@ -1030,22 +1000,6 @@ "er" = ( /turf/closed/wall/mineral/plastitanium, /area/awaymission/spacebattle/syndicate4) -"et" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) -"eu" = ( -/obj/machinery/gateway, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) -"ev" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/turf/open/floor/plating, -/area/awaymission/spacebattle/cruiser) "ew" = ( /obj/structure/chair, /turf/open/floor/mineral/plastitanium/red, @@ -2553,13 +2507,13 @@ /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "jK" = ( -/mob/living/simple_animal/hostile/syndicate/melee/sword, /obj/effect/turf_decal/tile/blue{ dir = 1 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/mob/living/simple_animal/hostile/syndicate/melee/sword, /turf/open/floor/plasteel, /area/awaymission/spacebattle/cruiser) "jL" = ( @@ -26891,9 +26845,9 @@ cc cc bT cK -ec -em -et +cK +cK +cK cK cK cK @@ -27148,9 +27102,9 @@ cA cc bT cK -ed +cK en -eu +cK cK cK cK @@ -27405,9 +27359,9 @@ cc cc bT cK -ee -eo -ev +cK +cK +cK cK jF fb diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index dd89b39ec47..4b70d78e8e8 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -1184,7 +1184,7 @@ "cM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5; - level = 2 + }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -1419,7 +1419,7 @@ }, /area/awaymission/undergroundoutpost45/central) "do" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/decal/cleanable/dirt, @@ -2905,7 +2905,7 @@ }, /area/awaymission/undergroundoutpost45/central) "fT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/decal/cleanable/dirt, @@ -3277,45 +3277,6 @@ }, /area/awaymission/undergroundoutpost45/central) "gR" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) -"gS" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) -"gT" = ( -/obj/machinery/gateway{ - dir = 5 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -3586,26 +3547,8 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/crew_quarters) -"ht" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) "hu" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /obj/structure/cable, @@ -3613,24 +3556,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/gateway) -"hv" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) "hw" = ( /obj/structure/chair{ dir = 8 @@ -3873,7 +3798,7 @@ "hU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4; - level = 2 + }, /obj/structure/table, /obj/item/book/manual/chef_recipes, @@ -3886,7 +3811,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4; - level = 2 + }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -3909,26 +3834,7 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/central) -"hY" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) "hZ" = ( -/obj/machinery/gateway, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -3944,24 +3850,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/gateway) -"ia" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/gateway) "ib" = ( /obj/structure/chair{ dir = 8 @@ -5084,7 +4972,7 @@ }, /area/awaymission/undergroundoutpost45/gateway) "kh" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/decal/cleanable/dirt, @@ -6623,7 +6511,7 @@ /area/awaymission/undergroundoutpost45/research) "mQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /turf/open/floor/plasteel/cafeteria{ @@ -8100,7 +7988,7 @@ }, /area/awaymission/undergroundoutpost45/research) "pl" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/decal/cleanable/dirt, @@ -9125,7 +9013,7 @@ }, /area/awaymission/undergroundoutpost45/engineering) "rk" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/turf_decal/tile/yellow{ @@ -9399,7 +9287,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4; - level = 2 + }, /obj/machinery/door/airlock/maintenance{ name = "Research Maintenance"; @@ -11265,7 +11153,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/computer/atmos_control{ dir = 4; - level = 3; name = "Distribution and Waste Monitor"; sensors = list("UO45_air_sensor" = "Mixed Air Supply Tank", "UO45_distro_meter" = "Distribution Loop", "UO45_waste_meter" = "Waste Loop") }, @@ -11897,7 +11784,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ layer = 5 }, /obj/effect/decal/cleanable/dirt, @@ -32692,8 +32579,8 @@ ad gv gJ gR -ht -hY +gR +gR it iO jh @@ -32948,7 +32835,7 @@ ad ad gv gJ -gS +gR hu hZ iu @@ -33205,9 +33092,9 @@ ad ad gw gJ -gT -hv -ia +gR +gR +gR iv iQ jj diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 5ba8e0c9038..fef54d42efc 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -63,58 +63,12 @@ /obj/structure/destructible/cult/pylon, /turf/open/floor/circuit/green/off, /area/awaymission/wildwest/vault) -"ar" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"as" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"at" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"au" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) "av" = ( -/obj/machinery/gateway/centeraway{ +/obj/machinery/gateway/away{ calibrated = 0 }, /turf/open/floor/circuit/green/off, /area/awaymission/wildwest/vault) -"aw" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"ax" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"ay" = ( -/obj/machinery/gateway, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) -"az" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/turf/open/floor/circuit/green/off, -/area/awaymission/wildwest/vault) "aA" = ( /obj/effect/meatgrinder, /turf/open/floor/circuit/green/off, @@ -716,7 +670,7 @@ /area/awaymission/wildwest/mines) "cL" = ( /obj/structure/table/wood, -/obj/item/twohanded/dualsaber, +/obj/item/dualsaber, /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cM" = ( @@ -47405,9 +47359,9 @@ aa ab ab ab -ar -au -ax +ao +ao +ao ao ao ao @@ -47662,9 +47616,9 @@ aa ab ab ab -as +ao av -ay +ao ao ao ao @@ -47919,9 +47873,9 @@ aa aa ab ab -at -aw -az +ao +ao +ao ao ao ao diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index 33f8e198771..59ef323f038 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -13,6 +13,7 @@ #include "map_files\PubbyStation\PubbyStation.dmm" #include "map_files\BoxStation\BoxStation.dmm" #include "map_files\Donutstation\Donutstation.dmm" + #include "map_files\Donutstation\Donutstation_LVL2.dmm" #ifdef TRAVISBUILDING #include "templates.dm" diff --git a/_maps/donutstation.json b/_maps/donutstation.json index a0fb9ccdcac..71230c2f668 100644 --- a/_maps/donutstation.json +++ b/_maps/donutstation.json @@ -1,11 +1,12 @@ { "map_name": "Donutstation", "map_path": "map_files/Donutstation", - "map_file": "Donutstation.dmm", + "map_file": ["Donutstation.dmm","Donutstation_LVL2.dmm"], "shuttles": { - "cargo": "cargo_box", - "ferry": "ferry_fancy", - "whiteship": "whiteship_donut", - "emergency": "emergency_donut" - } -} + "cargo": "cargo_box", + "ferry": "ferry_fancy", + "whiteship": "whiteship_donut", + "emergency": "emergency_donut" + }, + "traits": [{"Up" : 1, "Linkage" : "Cross"}, {"Down" : -1, "Baseturf" : "/turf/open/openspace", "Linkage" : "Cross"}] +} \ No newline at end of file diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index adebc8c52a3..325c5d2ee8c 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -302,7 +302,7 @@ /turf/open/floor/plasteel/cafeteria, /area/security/prison) "aaM" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/machinery/newscaster{ pixel_x = -32 @@ -16131,9 +16131,6 @@ /obj/machinery/gibber, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"aOU" = ( -/turf/closed/wall, -/area/hallway/secondary/exit) "aOV" = ( /obj/structure/sink{ dir = 4; @@ -16790,7 +16787,7 @@ /area/crew_quarters/locker) "aQY" = ( /obj/structure/table, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /obj/item/stack/pipe_cleaner_coil/random, /obj/item/stack/pipe_cleaner_coil/random, /obj/item/stack/pipe_cleaner_coil/random, @@ -17612,7 +17609,7 @@ /area/library) "aTd" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/machinery/light_switch{ pixel_y = 28 }, @@ -21134,12 +21131,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) -"bcC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) "bcD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -22462,12 +22453,6 @@ }, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/exit) -"bgg" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel/white/corner, -/area/hallway/secondary/exit) "bgh" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/stripes/line{ @@ -38620,7 +38605,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "cbc" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/white, /area/science/lab) "cbf" = ( @@ -45494,7 +45479,7 @@ /obj/structure/table/reinforced, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high/plus, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cBN" = ( @@ -48557,7 +48542,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "hDH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -48932,7 +48917,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/service) "jcu" = ( -/obj/item/twohanded/required/kirbyplants/dead, +/obj/item/kirbyplants/dead, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -50461,7 +50446,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "nZF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/radio/intercom{ pixel_y = 24 }, @@ -102364,22 +102349,22 @@ aQF cBl cBl fjH -aOU -aOU -aOU -aOU +aOd +aOd +aOd +aOd aNa -bcC +bcB aPq oqa teP gXa aPq aPq -bcC +bcB aPq aPq -bgg +bgf aNa aaa bky @@ -102621,7 +102606,7 @@ aRL mvb mvb hcb -aOU +aOd aOc aPs wzU @@ -102633,10 +102618,10 @@ aXG aPq aPq aPq -bcC +bcB aPq aPq -bgg +bgf aNa aaf bky @@ -102878,7 +102863,7 @@ aRU aTo aTo urd -aOU +aOd vzZ jNS aTm @@ -103135,7 +103120,7 @@ aRW aTo aTo aTo -aOU +aOd uuK iVT aPq @@ -103392,7 +103377,7 @@ aTn aTo aTo aTo -aOU +aOd aNa aNa saM diff --git a/_maps/map_files/BoxStation/job_changes.dm b/_maps/map_files/BoxStation/job_changes.dm new file mode 100644 index 00000000000..8fc22bff879 --- /dev/null +++ b/_maps/map_files/BoxStation/job_changes.dm @@ -0,0 +1,7 @@ +#define JOB_MODIFICATION_MAP_NAME "BoxStation" + +/datum/job/prisoner/New() + ..() + MAP_JOB_CHECK + total_positions = 4 //Other maps' brigs are too small for four, but Box's will be relatively empty otherwise; hopefully should be able to flesh out other maps's brigs in time so they can all be set to a cap of four prisoners + spawn_positions = 4 diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 996f746ce95..bef2c73a8b3 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -487,7 +487,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -533,7 +533,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "acp" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -1132,7 +1132,7 @@ name = "Construction RC"; pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -1192,7 +1192,7 @@ dir = 1 }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -1202,7 +1202,7 @@ dir = 1 }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -1219,7 +1219,7 @@ dir = 1 }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -1477,14 +1477,14 @@ /area/hallway/secondary/entry) "agk" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "agl" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -1776,7 +1776,7 @@ dir = 4; pixel_x = -24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -2006,7 +2006,7 @@ /area/maintenance/starboard/fore) "aio" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -2077,7 +2077,7 @@ /area/maintenance/starboard/fore) "ais" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -2721,7 +2721,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -2779,7 +2779,7 @@ "ajR" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -3185,7 +3185,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "akJ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral, @@ -3209,7 +3209,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "akN" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -3460,7 +3460,7 @@ /turf/open/floor/plasteel/grimy, /area/vacant_room/office) "alo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ pixel_y = 24 }, @@ -3537,7 +3537,7 @@ pixel_x = 26; pixel_y = 26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -3925,7 +3925,7 @@ /turf/open/floor/plasteel/grimy, /area/hallway/secondary/entry) "amq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/entry) "amr" = ( @@ -4174,7 +4174,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/electronic_marketing_den) "amN" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -4205,7 +4205,7 @@ /turf/open/floor/wood, /area/crew_quarters/electronic_marketing_den) "amQ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/electronic_marketing_den) "amR" = ( @@ -4235,7 +4235,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/electronic_marketing_den) "amV" = ( @@ -4501,7 +4501,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "anB" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -4531,7 +4531,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "anD" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -5189,7 +5189,7 @@ /turf/open/floor/plasteel/dark, /area/engine/atmospherics_engine) "aoM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/dark, /area/crew_quarters/electronic_marketing_den) "aoN" = ( @@ -5467,7 +5467,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "apt" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/maintenance/starboard/fore) "apu" = ( @@ -5786,7 +5786,7 @@ /turf/open/floor/plasteel/grimy, /area/vacant_room/office) "aqf" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/vacant_room/office) "aqg" = ( @@ -5877,7 +5877,7 @@ /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, @@ -6246,7 +6246,7 @@ /turf/open/floor/wood, /area/crew_quarters/electronic_marketing_den) "aqT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/power/apc{ areastring = "/area/crew_quarters/electronic_marketing_den"; name = "Electronics Marketing APC"; @@ -6623,7 +6623,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "arM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -6657,7 +6657,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "arQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -7954,7 +7954,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral{ @@ -8010,7 +8010,7 @@ /area/hallway/secondary/entry) "auq" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral, @@ -9315,7 +9315,7 @@ /turf/open/floor/plating, /area/crew_quarters/toilet/auxiliary) "awM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Auxiliary Restroom"; name = "restroom camera" @@ -9608,7 +9608,7 @@ "axr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "axs" = ( @@ -9726,7 +9726,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "axG" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, @@ -11554,7 +11554,7 @@ /turf/open/floor/plasteel, /area/hydroponics/garden/abandoned) "aBh" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small{ dir = 1 }, @@ -11599,7 +11599,7 @@ /turf/open/floor/plasteel, /area/hydroponics/garden/abandoned) "aBm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/status_display/evac{ pixel_y = 32 }, @@ -11618,7 +11618,7 @@ /turf/open/floor/plasteel, /area/hydroponics/garden/abandoned) "aBo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small{ dir = 1 }, @@ -12803,7 +12803,7 @@ /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) "aDH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/nanotrasen{ pixel_x = 32 }, @@ -13617,7 +13617,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aFu" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -13783,7 +13783,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aFH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -13799,7 +13799,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aFJ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -14663,7 +14663,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "aGX" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -14791,7 +14791,7 @@ /area/engine/atmospherics_engine) "aHj" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -14857,7 +14857,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "aHq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -14937,7 +14937,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/bar) "aHx" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -17099,7 +17099,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aLO" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -17194,7 +17194,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/supply) "aLV" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -17263,7 +17263,7 @@ /area/security/prison) "aMe" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/cable, /turf/open/floor/plating, /area/security/prison) @@ -17353,7 +17353,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aMn" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, @@ -17610,7 +17610,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/abandoned_gambling_den/secondary) "aMR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/crew_quarters/abandoned_gambling_den/secondary) "aMS" = ( @@ -17620,7 +17620,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/abandoned_gambling_den/secondary) "aMT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ pixel_y = 24 @@ -17641,7 +17641,7 @@ }, /area/crew_quarters/abandoned_gambling_den/secondary) "aMV" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/abandoned_gambling_den/secondary) "aMW" = ( @@ -18453,7 +18453,7 @@ /turf/open/floor/plasteel/dark, /area/engine/atmos) "aOo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -18670,7 +18670,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/crew_quarters/bar/atrium) "aOH" = ( @@ -19367,7 +19367,7 @@ /turf/open/floor/plasteel/checker, /area/engine/atmos) "aPO" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -19390,7 +19390,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aPQ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -19875,7 +19875,7 @@ /area/quartermaster/sorting) "aQE" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -20052,7 +20052,7 @@ /area/security/prison) "aRb" = ( /obj/machinery/light/small, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -20096,7 +20096,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aRg" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /turf/open/floor/plating{ @@ -21791,7 +21791,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aTY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 4 }, @@ -22618,7 +22618,7 @@ /turf/open/floor/engine/air, /area/engine/atmos) "aVc" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den/secondary) @@ -22714,7 +22714,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/theatre) "aVm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ c_tag = "Service Hallway - Aft"; @@ -25133,7 +25133,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aYR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 4; pixel_x = -24; @@ -25180,7 +25180,7 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aYU" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -25283,7 +25283,7 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "aZd" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/machinery/newscaster{ pixel_y = -32 @@ -25343,7 +25343,7 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "aZk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/prison) @@ -26015,7 +26015,7 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -26120,7 +26120,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "baK" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -26358,7 +26358,7 @@ /turf/open/floor/plasteel, /area/security/prison) "bbn" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/warning/pods{ dir = 8; pixel_y = -32 @@ -27725,7 +27725,7 @@ "bdP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/brown{ @@ -27852,7 +27852,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "beb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -28053,7 +28053,7 @@ /area/engine/atmos) "beB" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 4; pixel_x = -24 @@ -29215,7 +29215,7 @@ /turf/open/floor/plating, /area/quartermaster/miningoffice) "bgH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -29269,7 +29269,7 @@ /area/quartermaster/miningoffice) "bgL" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -30319,7 +30319,7 @@ /turf/open/floor/plasteel, /area/security/brig) "biE" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -30345,7 +30345,7 @@ /turf/open/floor/plasteel, /area/security/brig) "biG" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -30400,7 +30400,7 @@ /obj/machinery/newscaster/security_unit{ pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -31163,7 +31163,7 @@ /area/hallway/primary/fore) "bjR" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/brown, @@ -31227,7 +31227,7 @@ /area/quartermaster/miningoffice) "bjW" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -32129,7 +32129,7 @@ /area/hallway/primary/fore) "blJ" = ( /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/brown, @@ -32453,7 +32453,7 @@ /turf/open/floor/plasteel, /area/security/main) "bmr" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -32595,7 +32595,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -32633,7 +32633,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -32827,7 +32827,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 9 }, @@ -33677,7 +33677,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -33937,7 +33937,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "bpd" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -34631,7 +34631,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bqm" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/yellow{ @@ -37244,7 +37244,7 @@ /turf/open/floor/plasteel/dark, /area/security/main) "buT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/power/apc{ areastring = "/area/crew_quarters/heads/hos"; name = "Head of Security's Office APC"; @@ -37485,7 +37485,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bvk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small, /obj/machinery/light_switch{ pixel_x = 26; @@ -37874,7 +37874,7 @@ /turf/open/floor/plasteel, /area/security/execution/transfer) "bwc" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -37907,7 +37907,7 @@ /turf/open/floor/plasteel, /area/security/brig) "bwe" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -37952,7 +37952,7 @@ /turf/open/floor/plasteel, /area/security/main) "bwj" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -37990,7 +37990,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "bwo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /turf/open/floor/plasteel/dark, @@ -38012,7 +38012,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bwq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, @@ -38470,7 +38470,7 @@ /turf/open/floor/plasteel, /area/security/execution/transfer) "bxo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -38851,7 +38851,7 @@ /area/engine/atmos) "bxT" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, @@ -39219,7 +39219,7 @@ /obj/machinery/gulag_item_reclaimer{ pixel_y = 28 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -39283,7 +39283,7 @@ /turf/open/floor/plasteel, /area/security/execution/transfer) "byI" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 8; pixel_x = 24 @@ -39484,7 +39484,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "bzb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -40379,7 +40379,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bAz" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -40863,7 +40863,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bBl" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/storage/tech) @@ -40987,7 +40987,7 @@ name = "WARNING: BLAST DOORS"; pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue{ @@ -41016,7 +41016,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bBz" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -41855,7 +41855,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bCU" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 1 }, @@ -42427,7 +42427,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bDD" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 1 }, @@ -42728,7 +42728,7 @@ /turf/open/floor/plasteel, /area/security/execution/transfer) "bEb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, @@ -43292,7 +43292,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "bES" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/status_display/evac{ pixel_x = -32 }, @@ -43321,7 +43321,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bEV" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/status_display/ai{ pixel_x = 32 }, @@ -43659,7 +43659,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bFr" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -43716,7 +43716,7 @@ /turf/open/floor/plasteel/grimy, /area/bridge) "bFx" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -44336,7 +44336,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bGt" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 8; pixel_x = 24 @@ -44558,7 +44558,7 @@ /turf/open/floor/plasteel, /area/storage/primary) "bGM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -44606,7 +44606,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue, @@ -44874,7 +44874,7 @@ pixel_y = -32 }, /obj/machinery/light/small, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue, @@ -44900,7 +44900,7 @@ /area/security/detectives_office) "bHt" = ( /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/red{ @@ -44923,7 +44923,7 @@ /area/hallway/primary/starboard) "bHv" = ( /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/red{ @@ -45243,7 +45243,7 @@ /turf/closed/wall, /area/engine/break_room) "bHY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 8 }, @@ -46326,7 +46326,7 @@ /turf/closed/wall/r_wall, /area/engine/transit_tube) "bJQ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -46369,7 +46369,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -46431,7 +46431,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "bJV" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ pixel_y = 24 }, @@ -46756,7 +46756,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bKB" = ( @@ -46913,7 +46913,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) "bKT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bKU" = ( @@ -47382,7 +47382,7 @@ /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bLK" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 8; pixel_x = 24 @@ -47407,7 +47407,7 @@ /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bLL" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 8 }, @@ -47700,7 +47700,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "bMg" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/status_display/ai{ pixel_x = -32 }, @@ -47734,7 +47734,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bMj" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/status_display/evac{ pixel_x = 32 }, @@ -47911,7 +47911,7 @@ name = "Telecomms Monitoring APC"; pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, @@ -47947,7 +47947,7 @@ /obj/machinery/airalarm{ pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, @@ -48278,7 +48278,7 @@ /turf/closed/wall, /area/security/brig) "bNk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/door_timer{ id = "brig1"; name = "Cell 1"; @@ -48955,7 +48955,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bOe" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -49868,7 +49868,7 @@ /turf/closed/wall, /area/engine/transit_tube) "bPN" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 4; pixel_x = -24 @@ -49904,7 +49904,7 @@ /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bPP" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ pixel_x = 22; @@ -50061,7 +50061,7 @@ /turf/closed/wall, /area/engine/break_room) "bQb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/break_room) @@ -50164,7 +50164,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bQm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -50174,7 +50174,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bQn" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light_switch{ pixel_y = -26 }, @@ -50571,7 +50571,7 @@ dir = 1; pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -50663,7 +50663,7 @@ /turf/open/floor/plasteel/dark, /area/security/detectives_office) "bRn" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, @@ -50898,7 +50898,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "bRF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -51124,7 +51124,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/chief) "bSd" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -51345,7 +51345,7 @@ /area/bridge/meeting_room/council) "bSz" = ( /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bSA" = ( @@ -51402,12 +51402,12 @@ /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bSG" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bSH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bSI" = ( @@ -51953,7 +51953,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bTB" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat_interior"; name = "Antechamber Turret Control"; @@ -52184,7 +52184,7 @@ /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bTO" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -52416,7 +52416,7 @@ /turf/open/floor/plating, /area/engine/engineering) "bUe" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -53036,7 +53036,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bVk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/door_timer{ id = "brig2"; name = "Cell 2"; @@ -53698,7 +53698,7 @@ /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bWe" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small{ dir = 4 }, @@ -53793,7 +53793,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "bWm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 1; pixel_x = -24; @@ -54215,7 +54215,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "bWS" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -54229,7 +54229,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "bWU" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) @@ -54904,7 +54904,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "bXY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 8; pixel_x = 24 @@ -55001,7 +55001,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "bYh" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 4; pixel_x = -24 @@ -55274,7 +55274,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "bYw" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light_switch{ pixel_x = 26; pixel_y = -26 @@ -56187,7 +56187,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "cae" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -56236,7 +56236,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "cai" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/machinery/airalarm{ dir = 1; @@ -56273,7 +56273,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "cak" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light_switch{ pixel_x = -26 }, @@ -56356,7 +56356,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "cao" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, @@ -56458,7 +56458,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/engineering) "caB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/yellow{ @@ -57143,7 +57143,7 @@ /turf/closed/wall, /area/engine/engineering) "cbW" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -57184,7 +57184,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cca" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ pixel_y = 26 @@ -57603,7 +57603,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/captain/private) "ccS" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, @@ -57669,7 +57669,7 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "ccX" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -57709,7 +57709,7 @@ /turf/open/floor/plating, /area/security/courtroom) "cda" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -57979,7 +57979,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "cdw" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 1 }, @@ -58535,7 +58535,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cep" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -59414,7 +59414,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, @@ -59433,7 +59433,7 @@ /turf/open/floor/plasteel/grimy, /area/library) "cfY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small{ dir = 4 }, @@ -59603,7 +59603,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/captain/private) "cgt" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 1; pixel_y = -24 @@ -59621,7 +59621,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) "cgv" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -60446,7 +60446,7 @@ /turf/open/floor/plasteel/grimy, /area/library) "chP" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/library) "chQ" = ( @@ -61660,7 +61660,7 @@ /turf/open/floor/wood, /area/lawoffice) "ckg" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/sign/poster/official/report_crimes{ pixel_y = -32 @@ -62827,7 +62827,7 @@ /obj/machinery/status_display/ai{ pixel_x = 32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) @@ -63357,7 +63357,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "cnu" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/power/apc{ @@ -63397,7 +63397,7 @@ /area/ai_monitored/turret_protected/ai_upload) "cnw" = ( /obj/structure/table/reinforced, -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/effect/turf_decal/tile/neutral{ @@ -63431,7 +63431,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "cny" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/machinery/airalarm{ dir = 1; @@ -64412,7 +64412,7 @@ /area/library) "cpz" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -64437,7 +64437,7 @@ /turf/closed/wall, /area/crew_quarters/heads/head_of_personnel) "cpD" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "cpE" = ( @@ -64453,7 +64453,7 @@ dir = 1; pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "cpG" = ( @@ -64466,7 +64466,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "cpH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) @@ -64626,7 +64626,7 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "cpW" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -64641,7 +64641,7 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "cpX" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -65435,7 +65435,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crQ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Engineering - Central"; dir = 4; @@ -66446,7 +66446,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "ctH" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -66470,7 +66470,7 @@ /area/library) "ctK" = ( /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Library - Aft"; dir = 1; @@ -66491,7 +66491,7 @@ /area/library) "ctM" = ( /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light_switch{ pixel_y = -26 }, @@ -66499,7 +66499,7 @@ /turf/open/floor/plasteel/grimy, /area/library) "ctN" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/library) "ctO" = ( @@ -66683,7 +66683,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue{ @@ -66989,7 +66989,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -67007,7 +67007,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -67837,7 +67837,7 @@ /turf/closed/wall/r_wall, /area/engine/storage) "cwq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/dark, /area/library) "cwr" = ( @@ -67918,7 +67918,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cwy" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -67971,7 +67971,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -67986,7 +67986,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cwE" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -68016,7 +68016,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -68084,7 +68084,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "cwP" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue, @@ -68127,7 +68127,7 @@ /turf/open/floor/plasteel, /area/gateway) "cwV" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -68270,7 +68270,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cxh" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -68583,7 +68583,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cxI" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/electricshock{ pixel_y = 32 @@ -69012,63 +69012,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/gateway) -"cyE" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"cyF" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/machinery/status_display/evac{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"cyG" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "cyH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -69364,7 +69307,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -69922,48 +69865,12 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/gateway) -"cAi" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "cAj" = ( /obj/machinery/gateway/centerstation, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/gateway) -"cAk" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "cAl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ @@ -70040,7 +69947,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /turf/open/floor/plasteel, /area/crew_quarters/locker) "cAr" = ( @@ -70399,13 +70306,13 @@ /area/maintenance/port) "cAZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/maintenance/port) "cBa" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, @@ -70452,7 +70359,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cBh" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -70692,67 +70599,6 @@ "cBC" = ( /turf/closed/wall, /area/gateway) -"cBD" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"cBE" = ( -/obj/machinery/gateway, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/gateway) -"cBF" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Bridge - Gateway Chamber"; - dir = 8; - name = "command camera" - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "cBG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/radio/intercom{ @@ -70814,7 +70660,7 @@ dir = 4; pixel_x = -24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -70889,7 +70735,7 @@ /turf/open/floor/plating, /area/crew_quarters/toilet/restrooms) "cBR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -72328,7 +72174,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cEr" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/radio/intercom{ pixel_y = -26 }, @@ -72955,7 +72801,7 @@ /turf/open/floor/wood, /area/crew_quarters/dorms) "cFy" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/dorms) "cFz" = ( @@ -73175,7 +73021,7 @@ /area/engine/engineering) "cFT" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -73323,7 +73169,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cGi" = ( @@ -73342,7 +73188,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cGl" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) @@ -73398,7 +73244,7 @@ dir = 1; pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /turf/open/floor/plasteel/grimy, /area/bridge/showroom/corporate) @@ -73429,7 +73275,7 @@ pixel_x = 7; pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /turf/open/floor/plasteel/grimy, /area/bridge/showroom/corporate) @@ -73489,7 +73335,7 @@ dir = 1; pixel_y = -24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -73577,7 +73423,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "cGM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -73746,7 +73592,7 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "cGY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/carpet, /area/crew_quarters/dorms) @@ -73795,7 +73641,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cHi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -73862,7 +73708,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cHp" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -73873,7 +73719,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cHq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/electricshock{ pixel_y = -32 @@ -73952,7 +73798,7 @@ /area/maintenance/port) "cHy" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/maintenance/port) "cHz" = ( @@ -75817,7 +75663,7 @@ /turf/open/floor/plating, /area/crew_quarters/dorms) "cKY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -75948,7 +75794,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "cLi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -76590,7 +76436,7 @@ }, /area/crew_quarters/dorms) "cMs" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -77668,7 +77514,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/electrical) "cOw" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/department/electrical) @@ -77683,7 +77529,7 @@ /obj/machinery/light_switch{ pixel_y = 26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, @@ -78089,7 +77935,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cPr" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 1 }, @@ -78406,7 +78252,7 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "cPT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/radio/intercom{ pixel_x = 26; pixel_y = 26 @@ -78542,7 +78388,7 @@ /turf/open/floor/plasteel/dark/corner, /area/maintenance/department/electrical) "cQi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -78748,7 +78594,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cQC" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -78963,7 +78809,7 @@ /turf/open/floor/plasteel, /area/science/research) "cQR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/purple{ @@ -78972,7 +78818,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cQS" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue{ @@ -79049,7 +78895,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "cQY" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue{ @@ -79058,7 +78904,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cQZ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -79255,7 +79101,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/dorms) "cRv" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/nanotrasen{ pixel_x = 32; pixel_y = -32 @@ -79744,7 +79590,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "cSp" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/purple{ @@ -80109,7 +79955,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cSR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/storage/pod{ pixel_x = 32; pixel_y = 32 @@ -80367,7 +80213,7 @@ /obj/machinery/status_display/evac{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/department/electrical) @@ -80532,7 +80378,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -81803,7 +81649,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cVM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 1 }, @@ -81987,7 +81833,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "cWb" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/purple{ @@ -82040,7 +81886,7 @@ /turf/open/floor/plasteel, /area/science/research) "cWf" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/purple, @@ -82065,7 +81911,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue{ @@ -82106,7 +81952,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "cWl" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue, @@ -82381,7 +82227,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/electrical) "cWK" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -82708,7 +82554,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Security Post - Science"; dir = 8; @@ -82756,7 +82602,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cXu" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/purple{ @@ -82802,7 +82648,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cXy" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/purple, @@ -82875,7 +82721,7 @@ /area/medical/medbay/central) "cXJ" = ( /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue{ @@ -82918,7 +82764,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cXN" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue, @@ -83401,7 +83247,7 @@ /obj/machinery/light_switch{ pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/department/electrical) @@ -83541,7 +83387,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cYT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -83946,7 +83792,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "cZE" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -86182,7 +86028,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "ddy" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) @@ -86383,7 +86229,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "ddT" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/xenobiology) @@ -86658,7 +86504,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dev" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small, /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, @@ -86797,7 +86643,7 @@ /obj/structure/sign/departments/examroom{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -86859,7 +86705,7 @@ /turf/open/floor/plasteel, /area/medical/abandoned) "deS" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/medical/abandoned) @@ -87034,7 +86880,7 @@ /turf/open/floor/plasteel, /area/science/research) "dfl" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/storage/pod{ pixel_x = 32 }, @@ -87469,7 +87315,7 @@ /turf/closed/wall, /area/crew_quarters/abandoned_gambling_den) "dfZ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -87481,7 +87327,7 @@ /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dgb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/crew_quarters/abandoned_gambling_den) @@ -87522,7 +87368,7 @@ /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dgf" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dgg" = ( @@ -87684,7 +87530,7 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "dgu" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -87944,7 +87790,7 @@ /turf/open/floor/plasteel, /area/science/lab) "dgP" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/purple, /turf/open/floor/plasteel/white, /area/science/lab) @@ -88527,7 +88373,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/abandoned_gambling_den) "dhP" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_x = 32 @@ -89342,7 +89188,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "djo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -89359,7 +89205,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "djs" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -89703,7 +89549,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "djW" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -89820,7 +89666,7 @@ /turf/open/floor/plasteel, /area/science/lab) "dke" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/purple{ @@ -89836,7 +89682,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "dkf" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/yellow{ @@ -90166,7 +90012,7 @@ /area/medical/abandoned) "dkJ" = ( /obj/machinery/light/small, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/medical/abandoned) @@ -90781,7 +90627,7 @@ /turf/closed/wall, /area/hallway/secondary/construction) "dmi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) @@ -90919,7 +90765,7 @@ /turf/open/floor/plasteel/dark, /area/science/explab) "dmE" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/firealarm{ dir = 8; @@ -90988,7 +90834,7 @@ /turf/open/floor/plasteel/dark, /area/science/nanite) "dmJ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -91222,7 +91068,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "dno" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -91297,7 +91143,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dnv" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -91372,7 +91218,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dnC" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -93737,7 +93583,7 @@ }, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/bot, -/obj/item/twohanded/required/kirbyplants/dead, +/obj/item/kirbyplants/dead, /obj/structure/cable, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) @@ -93995,7 +93841,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "dsy" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) @@ -94825,7 +94671,7 @@ /turf/open/floor/plating, /area/science/research/abandoned) "dun" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/research/abandoned) @@ -95162,7 +95008,7 @@ /turf/closed/wall, /area/medical/genetics) "dvd" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ dir = 4; pixel_x = -24 @@ -95248,7 +95094,7 @@ /turf/open/floor/plasteel, /area/medical/genetics) "dvm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/firealarm{ pixel_x = -26; pixel_y = 26 @@ -95701,7 +95547,7 @@ /turf/open/floor/wood, /area/crew_quarters/abandoned_gambling_den) "dvY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/dark, /area/crew_quarters/abandoned_gambling_den) "dvZ" = ( @@ -96920,7 +96766,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "dyy" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -96954,7 +96800,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/heads/cmo) "dyC" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -97623,7 +97469,7 @@ /turf/open/floor/plasteel, /area/medical/genetics) "dzR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/purple, /turf/open/floor/plasteel/white, /area/medical/genetics) @@ -97718,7 +97564,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/heads/cmo) "dAf" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 4 }, @@ -98213,7 +98059,7 @@ /obj/structure/sign/poster/official/do_not_question{ pixel_y = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -99690,7 +99536,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/white, /area/medical/surgery/room_b) "dEe" = ( @@ -100010,7 +99856,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/science/robotics/lab) "dEO" = ( @@ -100280,7 +100126,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre/abandoned) "dFq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood{ icon_state = "wood-broken5" }, @@ -101151,7 +100997,7 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/security/detectives_office/private_investigators_office) "dGM" = ( @@ -102543,7 +102389,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/heads/cmo) "dJm" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/green{ dir = 8 @@ -102709,7 +102555,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/poster/official/do_not_question{ pixel_x = 32 }, @@ -103001,7 +102847,7 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/science/server) "dKh" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -103365,7 +103211,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -103603,7 +103449,7 @@ /turf/open/floor/plasteel, /area/maintenance/aft) "dLj" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -103627,7 +103473,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dLl" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/effect/turf_decal/tile/green{ dir = 4 @@ -103739,7 +103585,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/crew_quarters/theatre/abandoned) "dLv" = ( @@ -104052,7 +103898,7 @@ /turf/open/floor/plasteel, /area/science/research) "dMg" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -104558,7 +104404,7 @@ /area/crew_quarters/theatre/abandoned) "dNb" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/theatre/abandoned) "dNc" = ( @@ -104566,7 +104412,7 @@ dir = 1; pixel_y = -24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -105302,7 +105148,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/aft) "dOz" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 4; pixel_x = -24 @@ -105379,7 +105225,7 @@ name = "hallway camera" }, /obj/effect/turf_decal/bot, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -105430,7 +105276,7 @@ /area/hallway/primary/aft) "dOI" = ( /obj/machinery/light/small, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/green{ dir = 8 @@ -105797,7 +105643,7 @@ /area/library/abandoned) "dPw" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -105821,7 +105667,7 @@ /area/library/abandoned) "dPz" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/dark, /area/library/abandoned) "dPA" = ( @@ -105856,7 +105702,7 @@ /area/library/abandoned) "dPE" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, /area/library/abandoned) "dPH" = ( @@ -106178,14 +106024,14 @@ /turf/open/floor/plating, /area/medical/virology) "dQi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/green{ dir = 1 }, /turf/open/floor/plasteel/white, /area/medical/virology) "dQj" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/green{ dir = 1 }, @@ -106196,7 +106042,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "dQk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/green{ dir = 4 }, @@ -106250,7 +106096,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/green{ dir = 4 }, @@ -107726,14 +107572,14 @@ /turf/open/floor/plasteel/grimy, /area/library/abandoned) "dTq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/library/abandoned) "dTr" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood{ icon_state = "wood-broken" }, @@ -107796,7 +107642,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "dTz" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -107820,7 +107666,7 @@ "dTC" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -107880,7 +107726,7 @@ /area/hallway/secondary/exit/departure_lounge) "dTJ" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -108109,7 +107955,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "dUk" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 4 }, @@ -108176,7 +108022,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "dUo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -108195,7 +108041,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "dUq" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/item/radio/intercom{ pixel_y = 26 }, @@ -108260,7 +108106,7 @@ "dUv" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -108322,7 +108168,7 @@ /area/hallway/secondary/exit/departure_lounge) "dUB" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -108587,7 +108433,7 @@ /obj/machinery/status_display/evac{ pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/medical/virology) @@ -109068,11 +108914,11 @@ /area/library/abandoned) "dWE" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/library/abandoned) "dWF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/library/abandoned) "dWG" = ( @@ -109141,7 +108987,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "dWM" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Chapel - Port"; dir = 4; @@ -109180,7 +109026,7 @@ }, /area/chapel/main) "dWR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -109657,7 +109503,7 @@ /area/hallway/secondary/exit/departure_lounge) "dXK" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/structure/cable, @@ -109860,7 +109706,7 @@ }, /area/library/abandoned) "dYl" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light/small, /turf/open/floor/wood{ icon_state = "wood-broken3" @@ -109881,7 +109727,7 @@ /area/library/abandoned) "dYo" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/library/abandoned) "dYp" = ( @@ -109997,7 +109843,7 @@ /area/chapel/main) "dYD" = ( /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/cable, @@ -110093,7 +109939,7 @@ /turf/open/floor/plasteel, /area/medical/virology) "dYS" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/medical/virology) @@ -110102,7 +109948,7 @@ /obj/machinery/status_display/evac{ pixel_y = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/medical/virology) @@ -110317,7 +110163,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -110680,7 +110526,7 @@ /obj/structure/sign/nanotrasen{ pixel_y = -32 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, @@ -111373,7 +111219,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plating, /area/maintenance/port/aft) "ebP" = ( @@ -111478,7 +111324,7 @@ }, /area/chapel/main) "ebZ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light{ dir = 4 }, @@ -111758,7 +111604,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "ecE" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/light_switch{ pixel_x = 24; pixel_y = -24 @@ -111783,7 +111629,7 @@ name = "departures camera" }, /obj/effect/turf_decal/delivery, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -112542,7 +112388,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "edW" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, @@ -112650,7 +112496,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/port/aft) "eeo" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -112689,7 +112535,7 @@ /area/maintenance/port/aft) "eet" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -112746,7 +112592,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "eey" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Chapel Quarters"; name = "chapel camera" @@ -113521,7 +113367,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/escape) "egi" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -113803,7 +113649,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing/chamber) "ezJ" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/airalarm{ dir = 1; pixel_y = -24 @@ -113936,7 +113782,7 @@ /turf/open/floor/plasteel/white, /area/medical/surgery/room_b) "faI" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "MiniSat Service Bay"; dir = 8; @@ -113995,6 +113841,24 @@ }, /turf/open/floor/plasteel/dark/corner, /area/engine/storage_shared) +"fkU" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "fno" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -114765,6 +114629,21 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"kbp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "kbs" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -115035,6 +114914,26 @@ }, /turf/open/floor/engine, /area/science/mixing/chamber) +"lBz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Bridge - Gateway Chamber"; + dir = 8; + name = "command camera" + }, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "lEl" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -115094,6 +114993,21 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab/range) +"lRO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "lTo" = ( /obj/docking_port/stationary{ dheight = 4; @@ -115732,7 +115646,7 @@ /area/quartermaster/storage) "pfG" = ( /obj/effect/turf_decal/bot, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/hallway/primary/central) "phI" = ( @@ -115847,6 +115761,22 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/engine/storage_shared) +"pEv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) "pQm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -116067,7 +115997,7 @@ /turf/open/floor/plasteel, /area/engine/storage_shared) "qWr" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/camera{ c_tag = "Cryogenics Lounge" }, @@ -116184,6 +116114,24 @@ }, /turf/open/floor/plasteel, /area/maintenance/port) +"rFS" = ( +/obj/machinery/status_display/evac{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "rKN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -116229,7 +116177,7 @@ /turf/open/floor/plasteel, /area/medical/surgery/room_b) "rOf" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/delivery, /obj/machinery/light_switch{ pixel_x = 22 @@ -116413,6 +116361,21 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/vacant_room/commissary) +"tuM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "txy" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -159503,9 +159466,9 @@ qeD cur cvC cvz -cyE -cAi -cBD +kbp +tuM +fkU cDk cEY cGD @@ -159760,9 +159723,9 @@ csz cuk cvD cvz -cyF +rFS cAj -cBE +pEv cDl cEZ cGE @@ -160017,9 +159980,9 @@ csz cuk cvE cvz -cyG -cAk -cBF +lRO +tuM +lBz cDm cFa cGF diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index c0f28e2396b..294847c929d 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -2312,7 +2312,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "afD" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/plasteel/grimy, /area/ai_monitored/turret_protected/aisat/foyer) "afE" = ( @@ -3866,7 +3866,7 @@ /area/security/main) "ajF" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison) @@ -4194,7 +4194,7 @@ pixel_x = 26; pixel_y = -26 }, -/obj/item/twohanded/required/kirbyplants/dead, +/obj/item/kirbyplants/dead, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) "akK" = ( @@ -4710,7 +4710,7 @@ /turf/open/floor/plasteel/white, /area/science/explab) "amq" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/wood, @@ -7379,7 +7379,7 @@ /obj/item/stack/pipe_cleaner_coil/random, /obj/item/stack/pipe_cleaner_coil/random, /obj/item/stack/pipe_cleaner_coil/random, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "aur" = ( @@ -10508,7 +10508,7 @@ lootcount = 3; name = "3maintenance loot spawner" }, -/obj/item/twohanded/binoculars, +/obj/item/binoculars, /turf/open/floor/plating, /area/maintenance/starboard) "aCV" = ( @@ -13692,7 +13692,7 @@ /area/library) "aLD" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/carpet, /area/library) "aLE" = ( @@ -16714,24 +16714,6 @@ /obj/item/toy/crayon/red, /turf/open/floor/wood, /area/maintenance/port/aft) -"aUL" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "aUO" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -21024,7 +21006,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -34032,42 +34014,6 @@ /obj/item/paicard, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"bLD" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) -"bLE" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "bLF" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ @@ -34549,7 +34495,7 @@ /obj/machinery/firealarm{ pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -35063,87 +35009,15 @@ }, /turf/open/floor/wood, /area/maintenance/port/aft) -"bOC" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "bOD" = ( /obj/machinery/gateway/centerstation, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/gateway) -"bOE" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) -"bOF" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "bOG" = ( /turf/closed/wall/r_wall, /area/maintenance/port/fore) -"bOH" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "bOI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/splatter, @@ -35154,23 +35028,6 @@ /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating, /area/maintenance/port/aft) -"bOK" = ( -/obj/machinery/gateway, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/gateway) "bOM" = ( /obj/structure/sink{ dir = 4; @@ -38514,7 +38371,7 @@ /obj/structure/sign/departments/science{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -38532,7 +38389,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -38543,7 +38400,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bZF" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/carpet, @@ -38552,7 +38409,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/structure/cable, @@ -38575,7 +38432,7 @@ /obj/structure/sign/departments/security{ pixel_x = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -38587,7 +38444,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/white, @@ -38604,7 +38461,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -38619,7 +38476,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -38627,7 +38484,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bZM" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bZO" = ( @@ -38825,7 +38682,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/wood, @@ -41190,7 +41047,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/engine_room) "dCt" = ( @@ -41797,6 +41654,22 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/port/fore) +"eNU" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) "eQp" = ( /obj/machinery/smartfridge/food, /turf/closed/wall, @@ -42019,6 +41892,21 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/engine/engine_room) +"ffN" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "fhg" = ( /obj/machinery/door/airlock/maintenance{ name = "Cleaning Supplies"; @@ -42458,6 +42346,21 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"gad" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "gaj" = ( /obj/machinery/conveyor{ id = "garbage" @@ -43103,7 +43006,7 @@ lootcount = 2; name = "2maintenance loot spawner" }, -/obj/item/twohanded/binoculars, +/obj/item/binoculars, /turf/open/floor/plating, /area/maintenance/port/aft) "hAk" = ( @@ -43862,7 +43765,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "jaU" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -44238,7 +44141,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) "jII" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /turf/open/floor/wood, @@ -44470,6 +44373,21 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/hydroponics) +"kmo" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "kmI" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -44597,8 +44515,7 @@ /area/crew_quarters/heads/chief) "kAU" = ( /obj/machinery/power/emitter/welded{ - dir = 8; - + dir = 8 }, /obj/machinery/camera{ c_tag = "Engine -Emitters Right"; @@ -45246,7 +45163,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/engine_room) "mpC" = ( @@ -45424,8 +45341,7 @@ /area/engine/engineering) "mHo" = ( /obj/machinery/power/emitter/welded{ - dir = 8; - + dir = 8 }, /obj/structure/cable, /turf/open/floor/plating, @@ -46082,7 +45998,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/engineering) "nVf" = ( @@ -46172,7 +46088,7 @@ /area/engine/atmos) "oij" = ( /obj/effect/turf_decal/stripes/line, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/cable, /turf/open/floor/plasteel, /area/engine/engine_room) @@ -46298,7 +46214,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/cable, /turf/open/floor/plasteel, /area/engine/engine_room) @@ -47042,8 +46958,7 @@ /area/maintenance/port) "pLI" = ( /obj/machinery/power/emitter/welded{ - dir = 4; - + dir = 4 }, /obj/structure/cable, /turf/open/floor/plating, @@ -47419,7 +47334,7 @@ /area/space) "qxz" = ( /obj/effect/turf_decal/stripes/line, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/machinery/button/door{ id = "supermatter_external"; name = "Supermatter External Lockdown"; @@ -47437,7 +47352,7 @@ dir = 4; pixel_x = -24 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/engine_room) "qxY" = ( @@ -48930,7 +48845,7 @@ /area/quartermaster/sorting) "tKa" = ( /obj/structure/table, -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /obj/machinery/power/apc{ areastring = "/area/ai_monitored/turret_protected/ai_upload"; name = "AI Upload APC"; @@ -49177,7 +49092,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -49600,8 +49515,7 @@ /area/maintenance/port/aft) "vbr" = ( /obj/machinery/power/emitter/welded{ - dir = 4; - + dir = 4 }, /obj/machinery/camera{ c_tag = "Engine - Emitters Left"; @@ -87549,9 +87463,9 @@ arn axd kIw bsM -aUL -bOC -bOF +ffN +kmo +gad kOR asy bqC @@ -87806,9 +87720,9 @@ aru aBB bqh bsW -bLD +kmo bOD -bOK +eNU xNv asy bqC @@ -88063,9 +87977,9 @@ arn epJ dtH bti -bLE -bOE -bOH +gad +kmo +ffN kOR asy bqC diff --git a/_maps/map_files/Donutstation/Donutstation_LVL2.dmm b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm new file mode 100644 index 00000000000..ce954e55a90 --- /dev/null +++ b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm @@ -0,0 +1,86395 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"ab" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ac" = ( +/turf/open/openspace/airless, +/area/space) +"ad" = ( +/turf/closed/wall, +/area/quartermaster/qm/perch) +"ae" = ( +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"af" = ( +/turf/closed/wall, +/area/quartermaster/sorting) +"ag" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/medical/chemistry) +"ah" = ( +/turf/open/openspace, +/area/quartermaster/qm/perch) +"ai" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/sorting) +"aj" = ( +/obj/structure/rack, +/obj/item/plunger, +/obj/item/plunger{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ak" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"al" = ( +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"am" = ( +/obj/structure/closet/secure_closet/chemical, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"an" = ( +/obj/machinery/chem_heater{ + pixel_x = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ao" = ( +/obj/machinery/chem_dispenser{ + layer = 2.7 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ar" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Chemistry Hall"; + req_access_txt = "33" + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"as" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"at" = ( +/turf/closed/wall, +/area/maintenance/starboard/upper) +"au" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"av" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"aw" = ( +/obj/structure/disposalpipe/trunk/multiz/down, +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"ax" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"ay" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Warehouse Maintenance"; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"az" = ( +/obj/structure/chair/office/light, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aB" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aC" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/grenades, +/obj/item/book/manual/wiki/plumbing{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/sign/warning/chemdiamond{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aD" = ( +/obj/structure/rack, +/obj/item/construction/plumbing, +/obj/item/construction/plumbing{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aE" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aF" = ( +/obj/structure/disposaloutlet, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"aG" = ( +/turf/open/openspace/airless, +/area/space/nearstation) +"aH" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"aI" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/openspace, +/area/quartermaster/qm/perch) +"aJ" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Cargo Upper Quartermaster's Pearch"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"aK" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/power/tracker{ + id = "portbow" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aL" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"aM" = ( +/turf/closed/wall/r_wall, +/area/hallway/primary/upper) +"aN" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"aO" = ( +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"aP" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"aQ" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"aR" = ( +/turf/closed/wall/r_wall, +/area/security/prison/upper) +"aS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 9"; + dir = 4; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"aT" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"aU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell9"; + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"aV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/flasher{ + id = "pcell10"; + pixel_y = 28 + }, +/obj/effect/landmark/start/prisoner, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"aW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"aX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"aY" = ( +/obj/effect/turf_decal/trimline/white/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"aZ" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory/upper) +"ba" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bb" = ( +/turf/open/openspace, +/area/ai_monitored/security/armory/upper) +"bc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"bd" = ( +/turf/open/floor/engine/hull, +/area/space/nearstation) +"be" = ( +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"bf" = ( +/obj/machinery/power/solar, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bg" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/head/helmet/alt, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"bh" = ( +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bi" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor{ + id = "packageSort" + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bj" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bk" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bl" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"bm" = ( +/turf/closed/wall, +/area/hydroponics/upper) +"bn" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Medical - Chemfactory Northwest"; + dir = 2; + network = list("ss13","Medical") + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bp" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"br" = ( +/obj/machinery/vending/wardrobe/chem_wardrobe, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bs" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bt" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/head/welding, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bu" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/chemistry) +"bv" = ( +/turf/closed/wall, +/area/hallway/primary/upper) +"bw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"bx" = ( +/obj/machinery/conveyor{ + id = "packageSort" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"by" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"bz" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bA" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bC" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bE" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"bG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"bH" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bI" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"bJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"bK" = ( +/turf/open/floor/plasteel, +/area/security/prison/upper) +"bL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/security/glass{ + id_tag = "prisoncellmain"; + name = "Cell Airlock" + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"bM" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bR" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"bS" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/fitness/locker_room/male"; + dir = 1; + name = "Male Locker Room APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"bT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"bV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"bY" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"bZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ca" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Pharmacy Maintenance"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"cb" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Quartermaster"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"cc" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "External - Port Bow Exterior Access"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"cd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ce" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cg" = ( +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Chemistry Hall"; + req_access_txt = "33" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ch" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ci" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ck" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"cn" = ( +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/space/nearstation) +"co" = ( +/turf/closed/wall, +/area/library/private) +"cp" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/carpet/red, +/area/library/private) +"cq" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cr" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cs" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ct" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cv" = ( +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cw" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cx" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cy" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"cz" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/red, +/area/library/private) +"cA" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cB" = ( +/turf/closed/wall/r_wall, +/area/security/prison/shower) +"cC" = ( +/turf/closed/wall, +/area/library/upper) +"cD" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -3 + }, +/obj/item/storage/lockbox/loyalty, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cF" = ( +/obj/effect/turf_decal/bot, +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"cG" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cH" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/library/private) +"cI" = ( +/turf/open/floor/carpet/red, +/area/library/private) +"cJ" = ( +/turf/open/floor/wood, +/area/library/upper) +"cK" = ( +/obj/structure/displaycase/trophy, +/turf/open/floor/wood, +/area/library/upper) +"cL" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cM" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"cN" = ( +/obj/machinery/door/morgue{ + name = "Study #1" + }, +/turf/open/floor/carpet/red, +/area/library/private) +"cO" = ( +/obj/machinery/door/morgue{ + name = "Study #2" + }, +/turf/open/floor/carpet/red, +/area/library/private) +"cP" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/shield/riot, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cS" = ( +/obj/structure/ladder, +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Armory"; + dir = 2; + network = list("ss13","Security") + }, +/obj/structure/sign/poster/official/enlist{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"cV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ai_monitored/security/armory/upper) +"cW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory/upper) +"cX" = ( +/obj/machinery/shower{ + dir = 4; + name = "emergency shower" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"cY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/security/armory/upper) +"cZ" = ( +/obj/machinery/shower{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"da" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/security{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"db" = ( +/obj/machinery/shower{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"dc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/white/filled/warning, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/white/filled/warning, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"de" = ( +/turf/open/floor/wood, +/area/library/private) +"df" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dg" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/library/private) +"dh" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster{ + pixel_x = 28 + }, +/turf/open/floor/carpet/red, +/area/library/private) +"di" = ( +/turf/open/openspace, +/area/library/upper) +"dj" = ( +/obj/machinery/shower{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"dk" = ( +/turf/open/openspace, +/area/library/private) +"dl" = ( +/turf/closed/wall/r_wall, +/area/security/brig/upper) +"dm" = ( +/obj/machinery/door/morgue{ + name = "Study #3" + }, +/turf/open/floor/carpet/red, +/area/library/private) +"dn" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"do" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dp" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"dq" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Library Private Study"; + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/library/private) +"dr" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/library/upper) +"ds" = ( +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"dt" = ( +/obj/structure/cable, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"du" = ( +/obj/structure/noticeboard{ + desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; + name = "requests board"; + pixel_y = 28 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"dv" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/e_gun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/e_gun, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dw" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"dx" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dz" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dA" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/brig/upper) +"dD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dE" = ( +/turf/closed/wall, +/area/medical/chemistry) +"dF" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"dG" = ( +/obj/structure/chair/sofa/left{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"dH" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/library/private) +"dI" = ( +/obj/machinery/door/morgue{ + name = "Study #4" + }, +/turf/open/floor/carpet/red, +/area/library/private) +"dJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library/private) +"dK" = ( +/obj/structure/chair/sofa/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"dL" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/private) +"dM" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/private) +"dN" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/library/upper) +"dO" = ( +/obj/structure/table/wood, +/obj/machinery/computer/bookmanagement, +/turf/open/floor/carpet, +/area/library/upper) +"dP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dQ" = ( +/turf/open/floor/carpet, +/area/library/upper) +"dR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dS" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/laser, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory/upper) +"dU" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/library/upper"; + dir = 1; + name = "Upper Library APC"; + pixel_y = 24 + }, +/turf/open/floor/carpet, +/area/library/upper) +"dV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"dW" = ( +/turf/open/floor/plasteel, +/area/security/brig/upper) +"dX" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dY" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable, +/mob/living/simple_animal/bot/secbot{ + arrest_type = 1; + health = 45; + icon_state = "secbot1"; + idcheck = 1; + name = "Sergeant-at-Armsky"; + weaponscheck = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"dZ" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"ea" = ( +/obj/structure/rack, +/obj/item/gun/grenadelauncher{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/grenadelauncher, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"eb" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"ec" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/engine/cult, +/area/library/upper) +"ed" = ( +/obj/structure/table/wood, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/folder, +/turf/open/floor/engine/cult, +/area/library/upper) +"ee" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/engine/cult, +/area/library/upper) +"ef" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eg" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/floor/carpet, +/area/library/upper) +"eh" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access_txt = "37" + }, +/turf/open/floor/wood, +/area/library/upper) +"ei" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ej" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ek" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"el" = ( +/turf/open/floor/engine/cult, +/area/library/upper) +"em" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/engine/cult, +/area/library/upper) +"en" = ( +/obj/structure/table/wood, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/cult, +/area/library/upper) +"eo" = ( +/obj/machinery/libraryscanner, +/turf/open/floor/carpet, +/area/library/upper) +"ep" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eq" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"er" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/white/filled/warning, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"es" = ( +/turf/closed/wall, +/area/maintenance/central) +"et" = ( +/obj/machinery/power/apc{ + areastring = "/area/medical/pharmacy"; + dir = 8; + name = "Pharmacy APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"eu" = ( +/turf/open/floor/plating, +/area/maintenance/central) +"ev" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plating, +/area/maintenance/central) +"ew" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/central) +"ex" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"ey" = ( +/turf/open/openspace, +/area/security/brig/upper) +"ez" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/central) +"eA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"eB" = ( +/obj/machinery/shower{ + dir = 8; + name = "emergency shower" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"eC" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastleft{ + name = "Armory"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"eD" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"eE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "5;12" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"eF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"eG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"eH" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) +"eI" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"eJ" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 10 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"eK" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"eL" = ( +/turf/closed/wall/r_wall, +/area/gateway) +"eM" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/stack/ducts{ + amount = 24 + }, +/obj/item/stack/ducts{ + amount = 14 + }, +/obj/item/plunger, +/turf/open/floor/plating, +/area/maintenance/central) +"eN" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/storage/box/lights, +/turf/open/floor/plating, +/area/maintenance/central) +"eO" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eP" = ( +/obj/structure/lattice, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"eQ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/white/filled/warning, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eS" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eT" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eU" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 6 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eV" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eW" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eX" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eY" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"eZ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fa" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fb" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"fc" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/hydroponics/upper"; + dir = 4; + name = "Upper Hydroponics APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"fd" = ( +/obj/machinery/shower{ + dir = 4; + name = "emergency shower" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"fe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"ff" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/machinery/vending/hydronutrients, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"fg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"fh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fi" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fj" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/obj/structure/railing, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"fk" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"fl" = ( +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"fm" = ( +/turf/open/openspace, +/area/hallway/primary/upper) +"fn" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fp" = ( +/obj/effect/landmark/start/botanist, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"fq" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"fr" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"fs" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/sign/poster/official/space_cops{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Security - Upper Brig North"; + dir = 4; + network = list("ss13","Security") + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"ft" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"fu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"fv" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fy" = ( +/turf/open/openspace, +/area/maintenance/central) +"fz" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fA" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fB" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"fD" = ( +/obj/item/trash/cheesie, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"fE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"fF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fG" = ( +/turf/open/openspace, +/area/crew_quarters/dorms) +"fH" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"fI" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fJ" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plating, +/area/maintenance/central) +"fK" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/maintenance/central) +"fL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/central) +"fM" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"fN" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"fO" = ( +/obj/structure/chair/stool, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"fP" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 6 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"fQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"fR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"fS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"fT" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/engineering{ + name = "Lower-Floor Maintenance Access"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"fV" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fW" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"fX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"fY" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace/airless, +/area/space/nearstation) +"fZ" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/closed/wall, +/area/maintenance/starboard/upper) +"ga" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"gb" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"gc" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"gd" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ge" = ( +/obj/item/trash/sosjerky, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"gf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gg" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"gi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"gj" = ( +/obj/structure/table, +/obj/item/clothing/mask/cigarette/rollie/cannabis, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"gk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"gl" = ( +/obj/structure/chair/stool, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"gm" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"gn" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"go" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/central) +"gp" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gq" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"gs" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gt" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/ash, +/obj/item/cigbutt/cigarbutt, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gu" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gv" = ( +/obj/machinery/conveyor{ + id = "packageSort" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"gw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"gy" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"gz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"gA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/qm/perch) +"gC" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/closet/secure_closet/quartermaster, +/obj/machinery/camera{ + c_tag = "Cargo Upper Quartermaster Office"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gE" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gF" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gG" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gH" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gJ" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gK" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "packageSort" + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"gL" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/item/folder/yellow, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"gM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gN" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gO" = ( +/obj/machinery/gateway/centerstation, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gP" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/filingcabinet, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"gQ" = ( +/obj/effect/landmark/start/cargo_technician, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/chair/office, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"gR" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) +"gU" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gV" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gX" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"gY" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/gateway) +"gZ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ha" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/gateway{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/paper/pamphlet/gateway, +/obj/item/paper/pamphlet/gateway{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"hb" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hc" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/l3closet/scientist, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"hd" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/computer/gateway_control, +/turf/open/floor/plasteel, +/area/gateway) +"he" = ( +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/structure/rack, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"hf" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/gateway) +"hg" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hh" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/server/upper) +"hi" = ( +/obj/structure/rack, +/obj/item/radio/off{ + pixel_x = -2; + pixel_y = -3 + }, +/obj/item/radio/off, +/obj/item/radio/off{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"hj" = ( +/turf/closed/wall, +/area/crew_quarters/dorms/barracks/male) +"hk" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/stamp/qm, +/obj/item/toy/figure/qm{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/folder/yellow, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hl" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hm" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/filingcabinet, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hn" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"ho" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hp" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hr" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/computer/security/qm{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"ht" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hu" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"hv" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 1; + name = "Delivery Desk"; + req_access_txt = "50" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hw" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hx" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"hy" = ( +/obj/machinery/door/firedoor, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"hz" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/qm/perch"; + dir = 8; + name = "Quartermaster's Perch Overview APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hA" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hB" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"hC" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"hD" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mailroom"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hE" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hF" = ( +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Cargo Mailroom"; + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/item/destTagger, +/obj/item/storage/box/lights, +/obj/item/hand_labeler, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/sorting"; + dir = 8; + name = "Delivery Office APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hG" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort"; + pixel_x = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hI" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/wrapping_paper{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/wrapping_paper{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/wrapping_paper{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"hK" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hL" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hM" = ( +/obj/structure/rack, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/stack/ducts/fifty{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stack/ducts/fifty{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"hN" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"hP" = ( +/obj/structure/ladder, +/turf/open/floor/engine/cult, +/area/library/upper) +"hQ" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/engine/cult, +/area/library/upper) +"hR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/wood, +/area/library/upper) +"hS" = ( +/turf/closed/wall, +/area/library/printer) +"hT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"hU" = ( +/obj/machinery/photocopier, +/turf/open/floor/carpet/black, +/area/library/printer) +"hV" = ( +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"hW" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/railing/corner, +/turf/open/floor/wood, +/area/library/upper) +"hX" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/floor/carpet/black, +/area/library/printer) +"hY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/wood, +/area/library/upper) +"hZ" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/black, +/area/library/printer) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ib" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/power/apc{ + areastring = "/area/tcommsat/server/upper"; + dir = 1; + name = "Upper Telecomms Server APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"ic" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/power/deck_relay, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"id" = ( +/obj/machinery/light, +/turf/open/openspace, +/area/hallway/primary/upper) +"ie" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"if" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva/upper) +"ig" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/library/upper) +"ih" = ( +/obj/structure/table/wood, +/obj/item/folder, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"ii" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ij" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library/upper) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"il" = ( +/obj/machinery/bookbinder, +/turf/open/floor/carpet/black, +/area/library/printer) +"im" = ( +/obj/structure/filingcabinet, +/turf/open/floor/carpet/black, +/area/library/printer) +"in" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"io" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ip" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iq" = ( +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ir" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"is" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"it" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iu" = ( +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"iv" = ( +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iw" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ix" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/upper) +"iy" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iz" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iA" = ( +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library/private) +"iC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"iD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/private) +"iE" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/library/private"; + dir = 8; + name = "Library Private Study APC"; + pixel_x = -24 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/private) +"iF" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"iG" = ( +/obj/structure/cable, +/turf/open/floor/carpet, +/area/library/upper) +"iH" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/library/upper) +"iI" = ( +/obj/machinery/door/window/southright{ + req_access_txt = "37" + }, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/library/upper) +"iJ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"iK" = ( +/obj/structure/cable, +/turf/open/floor/wood, +/area/library/upper) +"iL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/library/printer) +"iM" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/library/printer"; + dir = 4; + name = "Library Printing APC"; + pixel_x = 24 + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"iN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"iO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"iP" = ( +/obj/machinery/camera{ + c_tag = "Civilian - Library Upper Main 1"; + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"iQ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Communal Printers" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/library/printer) +"iR" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"iS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/library/printer) +"iT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"iU" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"iV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/library/printer) +"iW" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Service - Hydroponics Upper Main 1"; + dir = 8; + network = list("ss13","Hydroponics") + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"iX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"iY" = ( +/obj/structure/window/reinforced/spawner, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet{ + name = "beekeeping suits" + }, +/obj/item/clothing/suit/beekeeper_suit, +/obj/item/clothing/suit/beekeeper_suit, +/obj/item/clothing/head/beekeeper_head, +/obj/item/clothing/head/beekeeper_head, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"iZ" = ( +/obj/structure/window/reinforced/spawner, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/east, +/obj/structure/closet/crate/hydroponics{ + desc = "All you need to start a hive."; + name = "beekeeper crate" + }, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/queen_bee/bought, +/obj/item/melee/flyswatter, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ja" = ( +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jc" = ( +/obj/structure/window/reinforced/spawner, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/west, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jd" = ( +/obj/structure/window/reinforced/spawner, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"je" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"jf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"jg" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/upper) +"jh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ji" = ( +/obj/item/toy/plush/beeplushie, +/turf/open/floor/plating, +/area/hydroponics/upper) +"jj" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/computer/security/telescreen{ + name = "Prison Monitor"; + network = list("Prison","PrisonCell"); + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"jk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"jl" = ( +/obj/effect/landmark/start/botanist, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jp" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jq" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jr" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"js" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jt" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ju" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/railing, +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jv" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jw" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/door/window/northleft{ + name = "Apiary"; + req_one_access_txt = "35;28" + }, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jy" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jz" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/structure/window/reinforced/spawner/east, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jB" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jC" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jD" = ( +/turf/open/openspace, +/area/hydroponics/upper) +"jE" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jF" = ( +/obj/structure/beebox, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jG" = ( +/obj/structure/window/reinforced/spawner/east, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/door/window/eastright{ + name = "Apiary"; + req_one_access_txt = "35;28" + }, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jI" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jJ" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jK" = ( +/obj/structure/window/reinforced/spawner/east, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jL" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"jM" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/openspace, +/area/hydroponics/upper) +"jN" = ( +/obj/structure/window/reinforced/spawner, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jO" = ( +/obj/structure/window/reinforced/spawner, +/obj/structure/window/reinforced/spawner/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/grass, +/area/hydroponics/upper) +"jP" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"jQ" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"jR" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jS" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jT" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"jU" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"jV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"jW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"jX" = ( +/obj/structure/cable, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Power Bridge Upper"; + dir = 2; + network = list("AISat") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"jY" = ( +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"jZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ka" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/upper) +"kb" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kd" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/upper) +"ke" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing/corner, +/turf/open/floor/wood, +/area/library/upper) +"kh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/ladder, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"ki" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"km" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kn" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ko" = ( +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"kp" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber North"; + dir = 2; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"kq" = ( +/obj/structure/cable, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kr" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "AI Chamber Power Storage"; + req_access_txt = "16" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"ks" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display/evac{ + pixel_x = -32 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"kt" = ( +/obj/machinery/porta_turret/ai, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"ku" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kv" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"ky" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kA" = ( +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display/ai{ + pixel_x = 32 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"kC" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kE" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"kF" = ( +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kI" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kJ" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kK" = ( +/obj/machinery/holopad, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kL" = ( +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kM" = ( +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kN" = ( +/obj/machinery/door/window/northright{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Left"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kO" = ( +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Left"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"kP" = ( +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Right"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"kQ" = ( +/obj/machinery/door/window/northleft{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Right"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kR" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 28 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = -27; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -25 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = -28; + pixel_y = -28 + }, +/obj/machinery/button/door{ + id = "aishuttersexternal"; + name = "External Privacy Shutter Control"; + pixel_x = -32 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kS" = ( +/obj/machinery/button/door{ + desc = "A door remote control switch. Press when the world comes tumbling down around you."; + id = "AI_Emergency_Lockdown_Left"; + name = "Emergency Internal Lockdown Access"; + pixel_x = 24; + req_access_txt = "16" + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kT" = ( +/turf/closed/wall, +/area/ai_monitored/turret_protected/ai) +"kU" = ( +/obj/structure/ladder, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"kV" = ( +/obj/machinery/button/door{ + desc = "A door remote control switch. Press when the world comes tumbling down around you."; + id = "AI_Emergency_Lockdown_Right"; + name = "Emergency Internal Lockdown Access"; + pixel_x = -24; + req_access_txt = "16" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kW" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 28 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 27; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -25 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 28; + pixel_y = -28 + }, +/obj/machinery/button/door{ + id = "aishuttersexternal"; + name = "External Privacy Shutter Control"; + pixel_x = 32 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kX" = ( +/obj/machinery/door/window/southright{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Left"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kY" = ( +/obj/machinery/door/window/southleft{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown_Right"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"kZ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"la" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lc" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"ld" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"le" = ( +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 5; + pixel_y = -24 + }, +/obj/machinery/door/window/westright{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown"; + name = "Emergency AI Lockdown Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lf" = ( +/obj/machinery/button/door{ + desc = "A door remote control switch. Press when the world comes tumbling down around you."; + id = "AI_Emergency_Lockdown"; + name = "Emergency Internal Lockdown Access"; + pixel_y = 24; + req_access_txt = "16" + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lg" = ( +/obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/ai_monitored/turret_protected/ai"; + name = "AI Chamber APC"; + pixel_y = -24 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -11; + pixel_y = -24 + }, +/obj/machinery/door/window/eastleft{ + name = "AI Access"; + req_access_txt = "16" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "AI_Emergency_Lockdown"; + name = "Emergency AI Lockdown Blast Door" + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lh" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"li" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display/ai{ + pixel_x = -32 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"lj" = ( +/obj/machinery/porta_turret/ai, +/obj/effect/turf_decal/trimline/red/filled/end{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"lk" = ( +/obj/effect/landmark/start/ai, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = -27; + pixel_y = -9 + }, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = -31 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 27; + pixel_y = -9 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -28; + pixel_y = -28 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 28; + pixel_y = -28 + }, +/obj/machinery/button/door{ + id = "aishuttersexternal"; + name = "External Privacy Shutter Control"; + pixel_y = -40 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"ll" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display/evac{ + pixel_x = 32 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"lm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber North #2"; + dir = 2; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"ln" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lo" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai) +"lp" = ( +/obj/machinery/light, +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber South"; + dir = 1; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"lq" = ( +/obj/machinery/light, +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber South #2"; + dir = 1; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/ai_monitored/turret_protected/ai) +"lr" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior North"; + dir = 1; + network = list("AISat") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"ls" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior West"; + dir = 8; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"lt" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior East"; + dir = 4; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"lu" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior West #2"; + dir = 8; + network = list("AISat") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lv" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior East #2"; + dir = 4; + network = list("AISat") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lw" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior West #3"; + dir = 8; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"lx" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Chamber Exterior South"; + dir = 2; + network = list("AISat") + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"ly" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lz" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lA" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lB" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lC" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lD" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lE" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lF" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Upload"; + dir = 1; + network = list("aiupload") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"lG" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"lH" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"lI" = ( +/turf/closed/wall, +/area/maintenance/fore/upper) +"lJ" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lK" = ( +/obj/effect/turf_decal/trimline/yellow/warning, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lL" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"lN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"lO" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lP" = ( +/obj/effect/turf_decal/trimline/yellow/corner, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"lR" = ( +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"lS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"lT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"lU" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"lV" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + name = "Reinforced Materials Crate" + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"lW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"lX" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"lY" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/command, +/obj/machinery/light, +/obj/machinery/door/window/northleft{ + name = "Secure Board Storage"; + req_access_txt = "53" + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault"; + dir = 1; + network = list("ss13","Secure") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"lZ" = ( +/turf/closed/wall/r_wall, +/area/engine/atmos/upper) +"ma" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"mc" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"md" = ( +/turf/closed/wall/r_wall, +/area/security/prison/mess) +"me" = ( +/obj/item/soap, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"mf" = ( +/turf/open/openspace, +/area/security/prison/upper) +"mg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/light/small, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"mh" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/mess) +"mi" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"mj" = ( +/turf/open/floor/plasteel, +/area/security/prison/mess) +"mk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"ml" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/trash/raisins, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"mm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/central) +"mn" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"mo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"mp" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"mq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"mr" = ( +/obj/effect/turf_decal/trimline/white/line, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"ms" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"mt" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"mu" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mw" = ( +/obj/structure/chair, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"mx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"my" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Lower-Floor Maintenance Access"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mz" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mA" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mB" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"mC" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/red/filled/corner, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"mD" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/closet/secure_closet/personal, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"mE" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"mF" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"mG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/central) +"mH" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"mI" = ( +/turf/closed/wall, +/area/maintenance/external/port/bow) +"mJ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/power/apc{ + areastring = "/area/maintenance/external/port/bow"; + dir = 1; + name = "Port Bow External Hull Access APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mK" = ( +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mL" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "External - Aux Exterior Access"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"mM" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mN" = ( +/obj/machinery/button{ + id = "dumbchapeldrop"; + name = "funny clown drop"; + pixel_x = 8; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"mO" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mP" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/maintenance/external/port/bow) +"mQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mR" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mS" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mT" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"mU" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"mV" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"mW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"mX" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/maintenance/external/aft"; + dir = 8; + name = "Aft External Hull Access APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"mY" = ( +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"mZ" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"na" = ( +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/structure/cable, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"nb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"nc" = ( +/obj/effect/turf_decal/trimline/white/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nd" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"ne" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/central) +"nf" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"ng" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 9 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nh" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"ni" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 5 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nj" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nk" = ( +/obj/effect/turf_decal/trimline/white/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nl" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/private) +"nm" = ( +/obj/structure/pitgrate{ + id = "dumbchapeldrop" + }, +/turf/open/openspace, +/area/maintenance/starboard/upper) +"nn" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"no" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"np" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"nq" = ( +/obj/structure/railing/corner, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"nr" = ( +/turf/open/openspace, +/area/maintenance/starboard/upper) +"ns" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/sign/poster/official/no_erp{ + pixel_x = -32 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"nt" = ( +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"nu" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"nv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/port/bow) +"nw" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/external/port/bow) +"nx" = ( +/turf/closed/wall, +/area/maintenance/department/security/upper) +"ny" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/structure/railing, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nz" = ( +/obj/structure/girder, +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/external/port/bow) +"nB" = ( +/turf/open/floor/plating, +/area/maintenance/external/port/bow) +"nC" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/turf/open/floor/plating, +/area/maintenance/external/port/bow) +"nD" = ( +/turf/closed/wall, +/area/maintenance/external/aft) +"nE" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"nF" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"nG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"nH" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"nI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/warehouse/upper"; + dir = 1; + name = "Upper Warehouse APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"nJ" = ( +/obj/machinery/shower{ + dir = 8; + name = "emergency shower" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"nK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"nL" = ( +/obj/structure/cable, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"nM" = ( +/obj/structure/table/reinforced, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"nN" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"nO" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/vehicle/ridden/secway, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"nP" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"nQ" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"nR" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"nS" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nT" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"nU" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"nV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/item/key/security, +/obj/item/key/security{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/structure/rack, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"nW" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"nX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"nY" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"nZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload"; + req_access_txt = "16" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"oa" = ( +/obj/machinery/door/airlock/command{ + name = "Gateway Access"; + req_access_txt = "62" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ob" = ( +/obj/machinery/door/poddoor/shutters{ + id = "stationawaygate"; + name = "Gateway Access Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/gateway) +"oc" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"od" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"oe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"of" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"og" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"oh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"oi" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"oj" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ok" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ol" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"om" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"on" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oo" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"op" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/power/apc{ + areastring = "/area/engine/gravity_generator"; + dir = 1; + name = "Gravity Generator APC"; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"or" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/glowstick, +/obj/effect/spawner/lootdrop/glowstick, +/obj/effect/spawner/lootdrop/glowstick, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"os" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ot" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ou" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/closed/wall, +/area/engine/gravity_generator) +"ov" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ow" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ox" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oy" = ( +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Internal North"; + dir = 2; + network = list("ss13","Engineering") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"oz" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"oB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oD" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"oE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oG" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Power Strut Access"; + req_access_txt = "11" + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"oH" = ( +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"oI" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"oJ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"oL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"oM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"oN" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oO" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oP" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oQ" = ( +/obj/structure/ladder, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"oR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oS" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"oU" = ( +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Internal South"; + dir = 1; + network = list("ss13","Engineering") + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"oV" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"oX" = ( +/turf/closed/wall, +/area/engine/gravity_generator) +"oY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"oZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pa" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pc" = ( +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pd" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pf" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pg" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ph" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = 32 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pj" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pk" = ( +/obj/machinery/gravity_generator/main/station, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pl" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pn" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"po" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pp" = ( +/turf/open/floor/plating, +/area/engine/gravity_generator) +"pq" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pr" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"ps" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pt" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pw" = ( +/obj/structure/ladder, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"px" = ( +/obj/machinery/power/deck_relay, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"py" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pz" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"pA" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pC" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pD" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pE" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/terminal, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pI" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/structure/cable/layer1, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pJ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/structure/cable/layer1, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pK" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"pM" = ( +/obj/machinery/requests_console{ + department = "Hydroponics"; + departmentType = 2; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"pN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pP" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pR" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pS" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/power/smes/engineering, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pT" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pU" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"pV" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Northwest"; + dir = 2; + network = list("ss13","Engineering") + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"pW" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"pX" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12;35" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"pY" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"pZ" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"qa" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Northeast"; + dir = 2; + network = list("ss13","Engineering") + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qc" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qd" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Southwest"; + dir = 1; + network = list("ss13","Engineering") + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qe" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/structure/cable/layer1, +/obj/machinery/camera{ + c_tag = "Engineering - Gravity Generator Southeast"; + dir = 1; + network = list("ss13","Engineering") + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qf" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qg" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"qh" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qi" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qj" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Upload External Noth"; + dir = 1; + network = list("ss13","Secure") + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"qk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"ql" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qm" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/openspace, +/area/hallway/primary/upper) +"qn" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mailroom"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"qo" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"qp" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qq" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qs" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qu" = ( +/turf/open/openspace, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qw" = ( +/obj/structure/table, +/obj/item/lipstick/random, +/obj/item/lipstick/random, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"qx" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qA" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qC" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qD" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"qE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"qF" = ( +/turf/open/openspace, +/area/ai_monitored/nuke_storage) +"qG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ai_monitored/nuke_storage) +"qH" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload Access"; + req_access_txt = "16" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qK" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"qL" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"qM" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qO" = ( +/obj/machinery/computer/upload/borg, +/obj/machinery/flasher{ + id = "AI_UPLOAD"; + pixel_x = -28 + }, +/obj/structure/window/reinforced/spawner/east, +/obj/structure/window/reinforced/spawner/west, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qP" = ( +/obj/structure/table, +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/ai_upload"; + name = "AI Upload APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qQ" = ( +/obj/machinery/computer/upload/ai, +/obj/machinery/flasher{ + id = "AI_UPLOAD"; + pixel_x = 28 + }, +/obj/structure/window/reinforced/spawner/east, +/obj/structure/window/reinforced/spawner/west, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qR" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qS" = ( +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"qT" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qU" = ( +/obj/structure/table, +/obj/structure/window/reinforced/spawner, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/aiModule/supplied/freeform, +/obj/structure/sign/plaques/kiddie{ + pixel_x = -32 + }, +/obj/item/aiModule/supplied/quarantine, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"qV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"qW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"qX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) +"qY" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"qZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"ra" = ( +/obj/effect/turf_decal/trimline/white/corner{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"rb" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rc" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"rd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"re" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Upload External West"; + dir = 8; + network = list("ss13","Secure") + }, +/turf/open/openspace/airless, +/area/space) +"rf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload turret control"; + pixel_y = 28 + }, +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_x = 29; + pixel_y = -2 + }, +/obj/effect/landmark/start/cyborg, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"rh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ri" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rj" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rk" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rl" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rm" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "35" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ro" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"rp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/machinery/camera/motion{ + c_tag = "AI Upload Access"; + dir = 4; + network = list("aiupload") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hydroponics/upper) +"rr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rs" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rt" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"ru" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"rv" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rw" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"rx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"ry" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rz" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"rA" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"rB" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rC" = ( +/obj/structure/table, +/obj/item/phone, +/obj/structure/sign/poster/contraband/bountyhunters{ + pixel_y = 32 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rD" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"rE" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rF" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"rG" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rH" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/primary/upper) +"rI" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rJ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rK" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"rL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rM" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"rO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rP" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/machinery/ore_silo, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rQ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rR" = ( +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/nuke_storage"; + dir = 1; + name = "Vault APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rS" = ( +/obj/structure/safe, +/obj/item/clothing/head/bearpelt, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/gun/ballistic/revolver/russian, +/obj/item/ammo_box/a357, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rT" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rU" = ( +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"rV" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/table, +/obj/structure/window/reinforced/spawner, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"rW" = ( +/obj/structure/table, +/obj/structure/window/reinforced/spawner, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_one_access_txt = "2;24" + }, +/obj/item/aiModule/reset, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"rX" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rY" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"rZ" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/structure/closet/crate/silvercrate, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sb" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Upload External South"; + dir = 2; + network = list("ss13","Secure") + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"sc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/table, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"se" = ( +/obj/machinery/porta_turret/ai, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/AI, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sg" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/aimodule_harmful, +/obj/machinery/door/window/eastleft{ + name = "Core Modules"; + req_access_txt = "20" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"sh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"si" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sj" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"sk" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/computer/bank_machine, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sl" = ( +/obj/structure/filingcabinet, +/obj/item/folder/documents, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sm" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sn" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"so" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sp" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"sr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"ss" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"st" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"su" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"sv" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 5 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"sw" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sx" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"sz" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sA" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sC" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/spawner/lootdrop/aimodule_neutral, +/obj/machinery/door/window/westleft{ + name = "Risky Modules"; + req_access_txt = "20" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload) +"sD" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sF" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"sG" = ( +/obj/structure/ladder, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/external/aft) +"sH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"sJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sL" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/multitool, +/obj/item/stack/cable_coil/five, +/obj/machinery/camera{ + c_tag = "External - Port Bow Solars Exterior Access"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"sM" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sN" = ( +/obj/machinery/power/deck_relay, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sP" = ( +/obj/structure/cable, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/nuke_storage"; + name = "Vault turret control"; + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sQ" = ( +/obj/machinery/door/airlock/vault{ + req_access_txt = "53" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"sS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"sT" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"sU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"sV" = ( +/obj/machinery/nuclearbomb/selfdestruct, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"sX" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault Entrance"; + dir = 1; + network = list("ss13","Secure") + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"sZ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ta" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"tb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"tc" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"td" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"te" = ( +/obj/machinery/newscaster{ + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tf" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"tg" = ( +/obj/machinery/door/firedoor, +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/openspace, +/area/hallway/primary/upper) +"th" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 5 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ti" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tj" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tk" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tl" = ( +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"tm" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tn" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"to" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/gateway) +"tp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/dark, +/area/gateway) +"tq" = ( +/obj/machinery/door/window{ + name = "Gateway Chamber"; + req_access_txt = "62" + }, +/obj/structure/sign/warning/biohazard{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/gateway) +"tr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ts" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Northeast 2"; + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tt" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tu" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"tv" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"tw" = ( +/obj/structure/lattice, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"tx" = ( +/obj/structure/lattice, +/obj/effect/turf_decal/trimline/yellow/line, +/obj/structure/railing, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"ty" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"tz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"tA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/bikehorn/rubberducky, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"tB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tF" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/library/private) +"tG" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tH" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/security/prison/shower) +"tI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"tL" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/library/upper) +"tM" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/black, +/area/library/printer) +"tN" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tO" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tP" = ( +/obj/machinery/door/poddoor/shutters{ + id = "stationawaygate"; + name = "Gateway Access Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"tQ" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tR" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tS" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tT" = ( +/obj/structure/railing, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"tU" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tV" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tW" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"tY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hallway/primary/upper) +"tZ" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ua" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ub" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"uc" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"ud" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ue" = ( +/obj/structure/window/reinforced, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) +"uf" = ( +/obj/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) +"ug" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central North 1"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"uh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"ui" = ( +/obj/machinery/door/window/southright{ + name = "Gateway Chamber"; + req_access_txt = "63" + }, +/obj/structure/sign/warning/biohazard{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) +"uj" = ( +/obj/machinery/door/airlock/command{ + name = "Vault"; + req_access_txt = "53" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"uk" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"ul" = ( +/turf/open/openspace, +/area/engine/atmos/upper) +"um" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"un" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"uo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"up" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"uq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/maintenance{ + name = "Pharmacy Maintenance"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plating, +/area/medical/chemistry) +"ur" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"us" = ( +/obj/machinery/door/airlock{ + name = "Unit 4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"ut" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"uu" = ( +/obj/machinery/door/airlock{ + name = "Unit 3" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"uv" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"uw" = ( +/obj/machinery/door/airlock{ + name = "Unit 3" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"ux" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"uy" = ( +/obj/machinery/door/airlock{ + name = "Unit 4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"uz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uA" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uB" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uC" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uD" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uE" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uF" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"uG" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uH" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uK" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uL" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uN" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/gateway) +"uO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uP" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"uQ" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"uR" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"uS" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/apc{ + areastring = "/area/engine/atmos/upper"; + dir = 4; + name = "Upper Atmospherics APC"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uY" = ( +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"uZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"va" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"vb" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vc" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"vd" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"ve" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"vf" = ( +/turf/closed/wall, +/area/crew_quarters/fitness/locker_room/male) +"vg" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"vh" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/central) +"vi" = ( +/turf/closed/wall, +/area/crew_quarters/dorms) +"vj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vk" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"vl" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vm" = ( +/obj/structure/table, +/obj/structure/bedsheetbin{ + desc = "It looks rather cosy. The words 'towel bin' have been slapped on it with a handheld labeler."; + name = "linen bin (towel bin)" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vn" = ( +/obj/machinery/shower{ + pixel_y = 24 + }, +/obj/structure/curtain, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vo" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"vq" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"vr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"vs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"vt" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"vu" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vv" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/dorms/barracks/male"; + dir = 1; + name = "Male Sleeping Barracks APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"vw" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/dorms/barracks/female"; + dir = 1; + name = "Female Sleeping Barracks APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"vx" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/dorms"; + dir = 1; + name = "Dormitories APC"; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/end, +/turf/open/floor/plating, +/area/maintenance/central) +"vy" = ( +/obj/effect/turf_decal/trimline/yellow/corner, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"vz" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"vA" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vB" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"vC" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/external/aft) +"vD" = ( +/turf/open/floor/plating, +/area/maintenance/external/aft) +"vE" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/external/aft) +"vF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"vG" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"vH" = ( +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 8 + }, +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/central) +"vI" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"vJ" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"vK" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"vL" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"vM" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vN" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vO" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/dorms) +"vP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"vQ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"vR" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plating, +/area/security/prison/upper) +"vS" = ( +/obj/structure/dresser, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"vT" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vU" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plating, +/area/security/prison/upper) +"vV" = ( +/obj/structure/urinal{ + pixel_x = 28 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vW" = ( +/obj/structure/urinal{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"vX" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"vY" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"wa" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"wb" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wc" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"we" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wf" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wg" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wh" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"wi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"wj" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"wk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/gateway) +"wl" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "stationawaygate"; + name = "Gateway Access Shutter Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/gateway) +"wm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/power/apc{ + areastring = "/area/gateway"; + dir = 4; + name = "Gateway APC"; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/gateway) +"wn" = ( +/obj/machinery/door/airlock/command{ + name = "Gateway Access"; + req_access_txt = "62" + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/gateway) +"wo" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"wp" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/closet/crate/bin{ + desc = "A laundry bin, place your laundry here for your mom to collect."; + name = "laundry bin" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/sign/poster/official/cleanliness{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"wq" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"wr" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"ws" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/brig/upper) +"wt" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wu" = ( +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wv" = ( +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"ww" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wx" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wy" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"wz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wA" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"wB" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"wC" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"wD" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"wE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12;1" + }, +/turf/open/floor/plating, +/area/security/brig/upper) +"wF" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"wG" = ( +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"wH" = ( +/turf/closed/wall, +/area/crew_quarters/fitness/locker_room/female) +"wI" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/security/brig/upper"; + dir = 8; + name = "Brig Overlook APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"wJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wK" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"wL" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"wM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"wN" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"wO" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/door/airlock/public/glass{ + name = "Male Sleeping Barracks" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"wP" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"wQ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Medical - Chemfactory Northeast"; + dir = 2; + network = list("ss13","Medical") + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"wR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/dorms/barracks/male) +"wS" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/wood, +/area/library/upper) +"wT" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"wU" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Medical - Chemfactory Southwest"; + dir = 1; + network = list("ss13","Medical") + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"wV" = ( +/obj/machinery/door/airlock{ + name = "Male Showers" + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"wW" = ( +/obj/machinery/door/window/westright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"wX" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"wY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/soap, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"wZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"xa" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xb" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Medical - Chemfactory Southeast"; + dir = 1; + network = list("ss13","Medical") + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"xc" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xd" = ( +/obj/structure/mirror{ + pixel_y = -32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = -5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xe" = ( +/obj/structure/table, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xf" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xg" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/closet/secure_closet/personal, +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"xh" = ( +/obj/structure/cable, +/obj/structure/railing, +/turf/open/floor/wood, +/area/library/upper) +"xi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xj" = ( +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"xk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"xl" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xn" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xo" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xp" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xq" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass, +/area/hydroponics/upper) +"xr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xs" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xt" = ( +/obj/machinery/shower{ + pixel_y = 24 + }, +/obj/structure/curtain, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xu" = ( +/obj/machinery/door/airlock{ + name = "Male Showers" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"xv" = ( +/obj/machinery/camera{ + c_tag = "Service - Hydroponics Upper Main 2"; + dir = 8; + network = list("ss13","Hydroponics") + }, +/turf/open/openspace, +/area/hydroponics/upper) +"xw" = ( +/obj/structure/table, +/obj/structure/bedsheetbin{ + desc = "It looks rather cosy. The words 'towel bin' have been slapped on it with a handheld labeler."; + name = "linen bin (towel bin)" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xx" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xy" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"xz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xA" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"xC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xE" = ( +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library/upper) +"xF" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"xG" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xH" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xJ" = ( +/obj/machinery/photocopier, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Library Printer Room"; + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/library/printer) +"xK" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xN" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Civilian - Male Barracks Hall"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xO" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Civilian - Upper Dormitories 1"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Male Restroom"; + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"xQ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Civilian - Upper Dormitories 2"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xR" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Upper Dormitories 4"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xS" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Female Restroom"; + dir = 2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"xU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"xV" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xW" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xX" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"xZ" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"ya" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"yb" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"yc" = ( +/turf/closed/wall, +/area/crew_quarters/dorms/barracks/female) +"yd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/closet/secure_closet/personal, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"ye" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yg" = ( +/obj/structure/dresser, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"yk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"yl" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Civilian - Upper Dormitories 3"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ym" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Civilian - Female Barracks Hall"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"yo" = ( +/obj/machinery/door/airlock{ + name = "Male Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"yp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yq" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"ys" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Secure - Gateway"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"yt" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yu" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yv" = ( +/obj/machinery/door/airlock{ + name = "Female Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"yw" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yx" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yy" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"yA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"yB" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"yC" = ( +/obj/machinery/camera{ + c_tag = "Civilian - Library Upper Main 2"; + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"yD" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"yE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"yF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yG" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yH" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + pixel_y = -6 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"yI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/closet/secure_closet/personal, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"yK" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/machinery/door/window/northleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yM" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yN" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yO" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/door/airlock/public/glass{ + name = "Female Sleeping Barracks" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"yP" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/dorms/barracks/female) +"yQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yR" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"yS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"yT" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yU" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yW" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"yX" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"yY" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"yZ" = ( +/obj/machinery/door/airlock{ + name = "Female Showers" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"za" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zb" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"zc" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 25 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"zd" = ( +/obj/structure/ladder, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/camera{ + c_tag = "Medical - Pharmacy"; + dir = 1; + network = list("ss13","Medical") + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"ze" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance"; + req_one_access_txt = "6;12;50" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"zf" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zg" = ( +/obj/machinery/door/window/westleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zh" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zi" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"zj" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zk" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zl" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zp" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/departments/chemistry{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"zq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/floor/wood, +/area/library/upper) +"zr" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/upper) +"zs" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"zt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/upper) +"zu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/upper) +"zv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zw" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zx" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"zy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/soap, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zA" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zC" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zD" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zE" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zF" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zH" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zI" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"zJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"zK" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"zL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zO" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zP" = ( +/obj/item/trash/semki, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"zQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"zR" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zS" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zT" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"zU" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 25 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"zV" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/southleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"zW" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"zX" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"zY" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"zZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/obj/item/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"Aa" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/red, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/female) +"Ab" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/hallway/primary/upper) +"Ac" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/central) +"Ad" = ( +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Ae" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"Af" = ( +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"Ag" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"Ah" = ( +/obj/machinery/door/airlock{ + name = "Female Showers" + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"Ai" = ( +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"Aj" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/fitness/locker_room/female"; + dir = 2; + name = "Female Locker Room APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"Ak" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Al" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Am" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "5;12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"An" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"Ao" = ( +/obj/structure/cable, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"Ap" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Aq" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"Ar" = ( +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"As" = ( +/obj/machinery/pipedispenser, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"At" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Au" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Av" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Aw" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/atmos/upper) +"Ax" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ + dir = 8; + id_tag = "mix_out_upper" + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"Ay" = ( +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"Az" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - AI Upload Hallway Access"; + dir = 2; + network = list("ss13","Secure") + }, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"AA" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/hallway/primary/upper) +"AB" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault External North"; + dir = 1; + network = list("ss13","Secure") + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"AC" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"AE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AF" = ( +/obj/machinery/computer/atmos_control/tank/mix_tank{ + dir = 8; + input_tag = "mix_in_upper"; + output_tag = "mix_out_upper"; + sensors = list("mix_sensor_upper" = "Upper Gas Mix Tank") + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AG" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"AH" = ( +/obj/machinery/air_sensor/atmos/mix_tank{ + id_tag = "mix_sensor_upper"; + name = "upper mix tank gas sensor" + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"AI" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"AJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/engine/atmos/upper) +"AK" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AL" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AN" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AO" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AP" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics - Upper Testing Grounds East"; + dir = 8; + network = list("ss13","Atmospherics") + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AQ" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/atmos/upper) +"AR" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ + dir = 8; + id = "mix_in_upper" + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"AS" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics - Upper Mix Tank"; + dir = 8; + network = list("ss13","Atmospherics") + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos/upper) +"AT" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AU" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AV" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"AW" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AX" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AY" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"AZ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Ba" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/engine/atmos/upper) +"Bb" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Bc" = ( +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Bd" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Be" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Bf" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Bg" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southleft{ + name = "Atmospherics Desk"; + req_access_txt = "24" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Bh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/atmos/upper) +"Bi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/maintenance/external/aft) +"Bj" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bk" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bl" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/yellow/warning, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bm" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bn" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bo" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bp" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bq" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Br" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Bs" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Bt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/space/nearstation) +"Bu" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics - Upper Testing Grounds South"; + dir = 1; + network = list("ss13","Atmospherics") + }, +/obj/machinery/light, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/atmos/upper) +"Bv" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access"; + req_access_txt = "24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"Bw" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, +/area/engine/atmos/upper) +"Bx" = ( +/obj/effect/turf_decal/box, +/obj/machinery/space_heater, +/turf/open/floor/plasteel/dark, +/area/engine/atmos/upper) +"By" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, +/area/engine/atmos/upper) +"Bz" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"BA" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access"; + req_access_txt = "24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"BB" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BC" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"BE" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BG" = ( +/obj/item/trash/candy, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"BH" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BI" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"BK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"BM" = ( +/obj/item/trash/boritos, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"BN" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"BP" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"BQ" = ( +/obj/machinery/power/solar_control{ + dir = 2; + id = "portbow"; + name = "Port Bow Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"BR" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"BS" = ( +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"BT" = ( +/obj/machinery/light/small, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"BV" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Armory External"; + dir = 1; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"BW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"BX" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/maintenance/central) +"BY" = ( +/obj/structure/punching_bag, +/turf/open/floor/plating, +/area/maintenance/central) +"BZ" = ( +/obj/structure/railing, +/turf/open/openspace/airless, +/area/space) +"Ca" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space) +"Cb" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/openspace/airless, +/area/space) +"Cc" = ( +/obj/effect/turf_decal/trimline/yellow/corner, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cd" = ( +/obj/effect/turf_decal/trimline/white/filled/corner, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"Ce" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 6 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cf" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Cg" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"Ch" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/central) +"Ci" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/structure/railing, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cj" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Ck" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cl" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/closed/wall, +/area/hallway/primary/upper) +"Cn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plating, +/area/engine/atmos/upper) +"Co" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/wirecutters, +/turf/open/floor/plating, +/area/maintenance/central) +"Cp" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 3; + name = "Atmos RC"; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Cq" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Cr" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Cs" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Ct" = ( +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Cu" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Cv" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cw" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/structure/railing, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Cx" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cy" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Cz" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"CA" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/stack/cable_coil/five, +/obj/item/stack/cable_coil/five, +/turf/open/floor/plating, +/area/maintenance/central) +"CB" = ( +/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/maintenance/central) +"CC" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"CD" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"CE" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace/airless, +/area/space) +"CF" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space) +"CG" = ( +/obj/effect/turf_decal/trimline/white/corner, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"CH" = ( +/obj/effect/turf_decal/trimline/white/filled/line, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"CI" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/open/openspace/airless, +/area/space) +"CJ" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/airless, +/area/space) +"CL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"CM" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"CN" = ( +/obj/structure/floodlight_frame, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/maintenance/central) +"CO" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Northwest 3"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"CP" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central North 2"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"CQ" = ( +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/fore) +"CR" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central North 3"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"CS" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Northwest 2"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"CT" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"CU" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"CV" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) +"CW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"CX" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"CY" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/primary/upper) +"CZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Da" = ( +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Db" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dd" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Northeast 1"; + dir = 2 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"De" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Northwest 1"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Df" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central West 3"; + dir = 4 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Dg" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Di" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/item/kirbyplants/photosynthetic, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"Dk" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Dl" = ( +/turf/open/floor/engine/hull, +/area/space) +"Dm" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Dn" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Do" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics - Upper Testing Grounds West"; + dir = 4; + network = list("ss13","Atmospherics") + }, +/obj/effect/turf_decal/trimline/yellow/line, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dp" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Dr" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/structure/railing/corner, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Ds" = ( +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/space) +"Dt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Du" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central East 1"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Dv" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central West 2"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Dw" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Dx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Dy" = ( +/turf/open/floor/plating, +/area/hydroponics/upper) +"Dz" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/hydroponics/upper) +"DA" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"DB" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northright{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"DC" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/male) +"DD" = ( +/obj/effect/turf_decal/trimline/yellow/warning, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DE" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"DF" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms/barracks/female) +"DG" = ( +/obj/structure/sink{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"DH" = ( +/obj/structure/closet/crate/rcd, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"DI" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/external/aft) +"DJ" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DK" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DL" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DM" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DN" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DO" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DP" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DQ" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DR" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"DS" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"DT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"DU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"DV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"DW" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central East 2"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"DX" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central West 1"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"DY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central East 3"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"DZ" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Southeast 1"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ea" = ( +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Southwest 2"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Eb" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Southeast 2"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ec" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central Southwest 1"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ed" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central South 2"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ee" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central South 1"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ef" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera{ + c_tag = "Hallway - Upper Central South 3"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Eg" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"Eh" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"Ei" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ej" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ek" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 6 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"El" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"Em" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"En" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/central) +"Eo" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"Ep" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/maintenance/central) +"Eq" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Er" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Es" = ( +/turf/closed/wall, +/area/quartermaster/warehouse/upper) +"Et" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/warehouse/upper) +"Eu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Ev" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"Ew" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Ex" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Ey" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Ez" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"EA" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"EB" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/central) +"EC" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"ED" = ( +/obj/item/chair/stool, +/turf/open/floor/plating, +/area/maintenance/central) +"EE" = ( +/obj/item/cigbutt/roach, +/turf/open/floor/plating, +/area/maintenance/central) +"EF" = ( +/obj/structure/girder, +/obj/structure/grille, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"EG" = ( +/obj/item/chair/stool, +/obj/structure/sign/warning/nosmoking/circle{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"EH" = ( +/obj/structure/closet/crate, +/obj/item/extinguisher/mini, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"EI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/turret_protected/ai_upload_foyer"; + dir = 8; + name = "AI Upload Access APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"EM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EP" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/quartermaster/warehouse/upper) +"EQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"ER" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"ES" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/machinery/camera{ + c_tag = "Cargo Upper Request Lobby"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"ET" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"EY" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"EZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Fa" = ( +/turf/closed/wall, +/area/maintenance/aft/upper) +"Fb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fc" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "5;12" + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Fd" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fe" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Ff" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fg" = ( +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Fh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse/upper) +"Fl" = ( +/turf/open/openspace, +/area/maintenance/department/security/upper) +"Fm" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/five, +/turf/open/floor/plating, +/area/maintenance/central) +"Fn" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Quartermaster"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fo" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fr" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm/perch) +"Fs" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating, +/area/maintenance/central) +"Ft" = ( +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating, +/area/maintenance/central) +"Fu" = ( +/obj/item/clothing/head/cone, +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/central) +"Fv" = ( +/obj/item/weldingtool, +/turf/open/floor/plating, +/area/maintenance/central) +"Fw" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/five, +/turf/open/floor/plating, +/area/maintenance/central) +"Fx" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/central) +"Fy" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/central) +"Fz" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/central) +"FA" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FB" = ( +/obj/structure/railing/corner, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FC" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/openspace/airless, +/area/space) +"FD" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FE" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/central) +"FF" = ( +/obj/effect/turf_decal/trimline/yellow/corner, +/obj/structure/railing/corner, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FG" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FH" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FI" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FJ" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/security/prison/upper) +"FK" = ( +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"FL" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"FM" = ( +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"FN" = ( +/obj/item/trash/raisins, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"FO" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"FP" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"FQ" = ( +/obj/item/clothing/head/cone, +/turf/open/floor/plating, +/area/maintenance/central) +"FR" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"FS" = ( +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/central) +"FT" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FU" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FV" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"FW" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/three, +/turf/open/floor/plating, +/area/maintenance/central) +"FX" = ( +/obj/structure/closet/cardboard, +/obj/item/clothing/gloves/boxing/green, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing/yellow, +/obj/item/clothing/gloves/boxing, +/turf/open/floor/plating, +/area/maintenance/central) +"FY" = ( +/obj/structure/lattice, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"FZ" = ( +/obj/structure/lattice, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ga" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Gb" = ( +/obj/item/trash/sosjerky, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gc" = ( +/turf/open/openspace, +/area/maintenance/aft/upper) +"Gd" = ( +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/aft/upper) +"Ge" = ( +/obj/structure/table, +/obj/item/trash/candle, +/turf/open/floor/plating, +/area/maintenance/central) +"Gf" = ( +/obj/item/trash/chips, +/turf/open/floor/plating, +/area/maintenance/central) +"Gg" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "6;12;50" + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Gh" = ( +/obj/item/trash/semki, +/turf/open/floor/plating, +/area/maintenance/central) +"Gi" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Gj" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gk" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gn" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "5;12" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Go" = ( +/obj/machinery/power/deck_relay, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gr" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gt" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gu" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gv" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Gw" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gx" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"Gz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"GA" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bed, +/obj/machinery/door/window/northleft{ + name = "tinted interior door"; + opacity = 1 + }, +/obj/item/bedsheet/blue, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms/barracks/male) +"GB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "5;12" + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"GC" = ( +/obj/item/cigbutt, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GD" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/trash/candy, +/obj/item/trash/popcorn, +/obj/item/trash/sosjerky, +/obj/item/trash/syndi_cakes, +/obj/item/trash/chips, +/obj/item/trash/chips, +/obj/item/trash/can, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GG" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GH" = ( +/obj/item/trash/pistachios, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GI" = ( +/obj/item/storage/toolbox/mechanical/old, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"GJ" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GK" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GL" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GM" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GN" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GO" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/male) +"GP" = ( +/obj/item/trash/cheesie, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GQ" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/fitness/locker_room/female) +"GR" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/central) +"GS" = ( +/obj/structure/closet/cardboard, +/obj/item/crowbar, +/obj/item/extinguisher, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"GT" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/storage/box/lights, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GU" = ( +/obj/structure/rack, +/obj/item/chair/plastic, +/obj/item/chair/plastic{ + pixel_y = 3 + }, +/obj/item/chair/plastic{ + pixel_y = 6 + }, +/obj/item/chair/plastic{ + pixel_y = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GV" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/artistic, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"GX" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GY" = ( +/obj/item/trash/candy, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"GZ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"Ha" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"Hb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Hc" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Hd" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/box, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"He" = ( +/obj/effect/turf_decal/box, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"Hf" = ( +/obj/item/clothing/head/cone, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Hg" = ( +/obj/item/storage/toolbox/mechanical, +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Hh" = ( +/obj/item/crowbar, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Hi" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Hj" = ( +/obj/item/flashlight{ + icon_state = "flashlight-on" + }, +/turf/open/floor/plating, +/area/maintenance/central) +"Hk" = ( +/obj/item/flashlight{ + icon_state = "flashlight-on" + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Hl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hm" = ( +/obj/structure/cable, +/obj/item/trash/popcorn, +/turf/open/floor/plating, +/area/maintenance/central) +"Hn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ho" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hp" = ( +/obj/structure/closet/crate, +/obj/item/hand_labeler, +/obj/item/hand_labeler_refill, +/obj/item/hand_labeler_refill, +/obj/item/storage/box/lights, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Hq" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hr" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/four, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Hs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ht" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hv" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hx" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hy" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Hz" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HA" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HB" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HC" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HE" = ( +/obj/structure/cable, +/obj/item/trash/candy, +/turf/open/floor/plating, +/area/maintenance/central) +"HF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HG" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HI" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HM" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HN" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"HO" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"HP" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/four, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HQ" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HR" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HS" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HT" = ( +/obj/structure/rack, +/obj/item/storage/fancy/candle_box, +/obj/item/clothing/suit/chaplainsuit/studentuni, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HU" = ( +/obj/structure/table, +/obj/item/trash/candle, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HV" = ( +/obj/item/storage/book/bible, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HW" = ( +/obj/item/chair, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"HX" = ( +/obj/structure/cable, +/obj/item/trash/plate, +/turf/open/floor/plating, +/area/maintenance/central) +"HY" = ( +/obj/structure/cable, +/obj/item/trash/sosjerky, +/turf/open/floor/plating, +/area/maintenance/central) +"HZ" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/central) +"Ia" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/plating, +/area/maintenance/central) +"Ib" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/three, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Ic" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Id" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"Ie" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"If" = ( +/obj/structure/closet/cardboard, +/obj/item/reagent_containers/food/snacks/canned/peaches, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Ig" = ( +/obj/structure/closet/cardboard, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Ih" = ( +/obj/structure/closet/cardboard, +/obj/item/wrench, +/obj/item/screwdriver, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Ii" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Ij" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/central) +"Ik" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"Il" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"Im" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/plating, +/area/maintenance/aft/upper) +"In" = ( +/obj/structure/sign/departments/botany{ + pixel_x = 32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Io" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/departments/chemistry{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ip" = ( +/obj/structure/sign/departments/botany{ + pixel_y = 32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Iq" = ( +/obj/structure/cable, +/obj/item/trash/chips, +/turf/open/floor/plating, +/area/maintenance/central) +"Ir" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/central) +"Is" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/central) +"It" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Iu" = ( +/obj/structure/lattice, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Iv" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Iw" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ix" = ( +/obj/structure/lattice, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Iy" = ( +/obj/structure/girder, +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Iz" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IA" = ( +/obj/structure/closet/secure_closet/lethalshots, +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/security/armory/upper"; + dir = 1; + name = "Upper Armory APC"; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"IB" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IC" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/kitty/genuine, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"ID" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library/upper) +"IE" = ( +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 4 + }, +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IF" = ( +/obj/machinery/door/airlock{ + name = "Private Study" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"IG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"IH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library/private) +"II" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/wood, +/area/library/private) +"IJ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library/private) +"IK" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library/private) +"IL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 4 + }, +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"IP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"IQ" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"IR" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IS" = ( +/obj/structure/ladder, +/turf/open/floor/plating, +/area/tcommsat/server/upper) +"IT" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IU" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IV" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"IW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"IX" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"IY" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"IZ" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Ja" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Jb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Jc" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Jd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Je" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Jf" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jg" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jh" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing/corner, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Ji" = ( +/obj/structure/rack, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/item/clothing/suit/armor/laserproof, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/railing, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jj" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jk" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jl" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jm" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jn" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jo" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jp" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jq" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jr" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Js" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/railing/corner, +/obj/machinery/door/window/eastright{ + name = "Armory"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory/upper) +"Jt" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Ju" = ( +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Jv" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Jw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell13"; + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Jx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell14"; + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Jy" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Jz" = ( +/obj/machinery/light/small, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"JA" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"JB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JC" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JD" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/washing_machine, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"JE" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"JF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/maintenance/department/security/upper) +"JG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/engineering{ + name = "Lower-Floor Maintenance Access"; + req_access_txt = "10" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"JH" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"JI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/upper) +"JJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JL" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JM" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JO" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/openspace, +/area/security/brig/upper) +"JP" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/secure_data{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/machinery/camera{ + c_tag = "Security - Upper Brig South"; + dir = 4; + network = list("ss13","Security") + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JQ" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JR" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"JS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JT" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"JU" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/tcommsat/server/upper) +"JV" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JW" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JX" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Security - Upper Brig Hall West"; + dir = 2; + network = list("ss13","Security") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JY" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"JZ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Ka" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/computer/security{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Kb" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Kc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Kd" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/sign/poster/official/here_for_your_safety{ + pixel_y = 32 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Ke" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Kf" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/book/manual/wiki/cooking_to_serve_man, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Kg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"Kh" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecomms Control Room"; + req_one_access_txt = "19; 61" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Ki" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server/upper) +"Kj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/fore/upper) +"Kk" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/space/nearstation) +"Kl" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/openspace/airless, +/area/space/nearstation) +"Km" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 8; + icon_state = "railing" + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"Kn" = ( +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"Ko" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kp" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"Kq" = ( +/obj/item/toy/beach_ball/holoball/dodgeball, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/trash/can, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Ks" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/storage/bag/trash, +/obj/item/trash/candy, +/obj/item/trash/candy, +/obj/item/trash/pistachios, +/obj/item/stack/sheet/mineral/coal, +/obj/item/trash/popcorn, +/obj/item/trash/tray, +/obj/item/trash/plate, +/obj/item/trash/can, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kt" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance/three, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Ku" = ( +/obj/structure/grille/broken, +/obj/item/trash/cheesie, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Mess Hall" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Kw" = ( +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance/four, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Ky" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/trash/pistachios, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"Kz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/item/trash/sosjerky, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KA" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KB" = ( +/obj/item/toy/crayon/spraycan, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KC" = ( +/obj/structure/window/reinforced/tinted/fulltile, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KD" = ( +/obj/effect/landmark/blobstart, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/maintenance/fore/upper) +"KF" = ( +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KG" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/fore/upper) +"KH" = ( +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KI" = ( +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/fore/upper) +"KJ" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/fore/upper) +"KK" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind, +/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind{ + pixel_x = 8 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind{ + pixel_x = -8 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/fore/upper) +"KL" = ( +/obj/structure/table, +/obj/item/radio/intercom, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/fore/upper) +"KM" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/item/trash/can{ + icon_state = "space_mountain_wind" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"KN" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/railing, +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"KO" = ( +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server/upper) +"KP" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - Upper Telecomms External North"; + dir = 1; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"KQ" = ( +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Brig External East"; + dir = 8; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"KR" = ( +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Brig External West"; + dir = 4; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"KS" = ( +/obj/machinery/telecomms/relay/preset/auto, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server/upper) +"KT" = ( +/obj/machinery/light, +/turf/open/floor/circuit/telecomms/mainframe, +/area/tcommsat/server/upper) +"KU" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecomms Control Room"; + req_one_access_txt = "19; 61" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"KV" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"KW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/server/upper) +"KX" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server/upper) +"KY" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server/upper) +"KZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell15"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"La" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Lb" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Lc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Ld" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 6 + }, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Le" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Lf" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Lg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Lh" = ( +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = null + }, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/food/condiment/soysauce, +/obj/item/reagent_containers/food/condiment/sugar, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Li" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Lj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Lk" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Ll" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Showers & Laundry" + }, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Lm" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/button/flasher{ + id = "pcell9"; + pixel_x = 8; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ln" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Lo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell16"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Lp" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/prison/upper) +"Lq" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Lr" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Ls" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/shower) +"Lt" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/washing_machine, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Lu" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Lv" = ( +/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Lw" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Lx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/mess) +"Ly" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Lz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"LA" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LB" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LC" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LD" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LE" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LF" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LG" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LI" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LJ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LK" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"LL" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LM" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"LN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "pcell10"; + pixel_x = 8; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LO" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LP" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LR" = ( +/obj/structure/table, +/obj/item/kitchen/fork/plastic, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LT" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"LU" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor Upper Hall"; + dir = 5; + network = list("ss13","Prison","Security") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LV" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"LW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LX" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LY" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"LZ" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ma" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mb" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mc" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Md" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Me" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Mf" = ( +/obj/machinery/camera{ + c_tag = "Security - Prison Mess Hall North"; + dir = 2; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Mg" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Mi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Mj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Mk" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Ml" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Main Prison Wing"; + req_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Mm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/security/prison/mess) +"Mn" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Mo" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mp" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mq" = ( +/obj/structure/table, +/obj/structure/cable, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Mr" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Brig External South"; + dir = 2; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ms" = ( +/obj/machinery/camera/motion{ + c_tag = "Security - Upper Brig External South 2"; + dir = 2; + network = list("ss13","Security") + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Mt" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"Mu" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mv" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mw" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/upper) +"My" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Mz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"MA" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"MB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MC" = ( +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MD" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"ME" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"MF" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MG" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MH" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/ladder, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MI" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"MJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/storage/eva/upper"; + dir = 1; + name = "Upper EVA APC"; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"MK" = ( +/obj/machinery/door/airlock/external{ + name = "Gravity Generator External Access"; + req_access_txt = "10; 13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"ML" = ( +/obj/machinery/door/airlock/external{ + name = "Gravity Generator External Access"; + req_access_txt = "10; 13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"MM" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"MN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva/upper) +"MO" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"MP" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MQ" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access"; + req_access_txt = "24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"MR" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MS" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"MU" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MV" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"MW" = ( +/obj/machinery/door/airlock/external{ + name = "External Hull Access"; + req_access_txt = "24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"MX" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fore/upper) +"MY" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"MZ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Na" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nb" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva/upper) +"Nd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"Ne" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"Nf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/storage/eva/upper) +"Ng" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/yellow/corner, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nh" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ni" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nj" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/obj/structure/railing/corner, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nk" = ( +/obj/structure/lattice, +/obj/structure/railing, +/turf/open/openspace/airless, +/area/space/nearstation) +"Nl" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Nm" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/openspace/airless, +/area/space/nearstation) +"Nn" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"No" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Np" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/central) +"Nq" = ( +/obj/structure/railing/corner, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nr" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Ns" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nt" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Nu" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos/upper) +"Nv" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/hydroponics/upper) +"Nw" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/hydroponics/upper) +"Nx" = ( +/obj/item/melee/flyswatter, +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/hydroponics/upper) +"Ny" = ( +/obj/machinery/camera{ + c_tag = "Service - Hydroponics Apiary"; + dir = 4; + network = list("ss13","Hydroponics") + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/hydroponics/upper) +"Nz" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/hydroponics/upper) +"NA" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/hydroponics/upper) +"NB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NC" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault Hallway Access"; + dir = 1; + network = list("ss13","Secure") + }, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"ND" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault External West"; + dir = 8; + network = list("ss13","Secure") + }, +/turf/open/openspace/airless, +/area/space) +"NE" = ( +/obj/machinery/camera/motion{ + c_tag = "Secure - Vault External South"; + dir = 2; + network = list("ss13","Secure") + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"NF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NG" = ( +/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NH" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NI" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor North Western Hall"; + dir = 2; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NJ" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NK" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NM" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Security - Upper Brig Hall North"; + dir = 4; + network = list("ss13","Security") + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NQ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"NS" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/button/flasher{ + id = "pcell1"; + pixel_x = 8; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NW" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NY" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "pcell13"; + pixel_x = -8; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"NZ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "pcell14"; + pixel_x = -8; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oa" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor Upper Central Hall"; + dir = 2; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ob" = ( +/obj/effect/turf_decal/trimline/red/filled/warning, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oc" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Od" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oe" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Of" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Og" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oh" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/status_display/ai{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor North Eastern Hall"; + dir = 6; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oi" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oj" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ok" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ol" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Om" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"On" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Main Prison Wing"; + req_access_txt = "2" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Oo" = ( +/obj/effect/turf_decal/trimline/red/filled/warning, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Op" = ( +/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Oq" = ( +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Or" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Os" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Ot" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "pcell15"; + pixel_x = -8; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ou" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Showers & Laundry" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"Ov" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor Lower Hall"; + dir = 5; + network = list("ss13","Prison","Security") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ow" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/sign/poster/official/enlist{ + pixel_y = -32 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Ox" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Oy" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/closet/crate/bin{ + desc = "A laundry bin, place your laundry here for your mom to collect."; + name = "laundry bin" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"Oz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/shower) +"OA" = ( +/turf/closed/wall/r_wall, +/area/security/prison/work) +"OB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OC" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OD" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OE" = ( +/obj/structure/table, +/obj/structure/sign/poster/official/work_for_a_future{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OF" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/machinery/button/flasher{ + id = "pcell16"; + pixel_x = -8; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OG" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OH" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/machinery/light, +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor South Western Hall"; + dir = 1; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OI" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OJ" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OK" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OL" = ( +/obj/structure/frame/machine, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"ON" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OO" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"OP" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OQ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor Lower Central Hall"; + dir = 10; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OR" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/cable, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison 2nd Floor South Eastern Hall"; + dir = 10; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OS" = ( +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OT" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OU" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"OW" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OY" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"OZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pa" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pb" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pc" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pd" = ( +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Work Hall" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pf" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pg" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pi" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "pcell12"; + pixel_x = 8; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"Pk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/machinery/power/deck_relay, +/turf/open/floor/plating, +/area/security/prison/upper) +"Pl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 10"; + dir = 4; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Pn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell11"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Po" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/prisoner, +/obj/machinery/flasher{ + id = "pcell12"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"Pp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Ps" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pt" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Work Hall" + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pu" = ( +/obj/structure/frame/machine, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pv" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pw" = ( +/obj/structure/frame/machine, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Px" = ( +/obj/structure/table, +/obj/structure/sign/poster/official/obey{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Py" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/prison/work) +"Pz" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PA" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/work) +"PC" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"PD" = ( +/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"PE" = ( +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"PF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Lower-Floor Maintenance Access"; + req_access_txt = "10" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/upper) +"PG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/upper) +"PH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/upper) +"PI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison/upper) +"PJ" = ( +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Security - Prison Work Room"; + dir = 5; + network = list("ss13","Prison","Security") + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PL" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/computer/security/telescreen{ + name = "Prison Monitor"; + network = list("Prison","PrisonCell"); + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/brig/upper) +"PM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/washing_machine, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Showers"; + dir = 5; + network = list("ss13","Prison","Security") + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison/shower) +"PN" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PO" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/security/prison/work) +"PP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 13"; + dir = 8; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 14"; + dir = 8; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = -24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 11"; + dir = 5; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = -24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 12"; + dir = 5; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = -24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 15"; + dir = 9; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = -24; + prison_radio = 1 + }, +/obj/machinery/camera{ + c_tag = "Security - Prison Cell 16"; + dir = 9; + network = list("ss13","PrisonCell","Prison","Security") + }, +/obj/item/bedsheet/orange, +/turf/open/floor/plasteel/dark, +/area/security/prison/upper) +"PV" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"PW" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/quartermaster/qm/perch) +"PX" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/quartermaster/warehouse/upper) +"PY" = ( +/obj/structure/table, +/obj/item/clothing/mask/cigarette, +/obj/item/lighter/greyscale{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/upper) +"PZ" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/quartermaster/sorting) +"Qa" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/crew_quarters/dorms/barracks/male) +"Qb" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/crew_quarters/fitness/locker_room/male) +"Qc" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/crew_quarters/dorms) +"Qd" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/hallway/primary/upper) +"Qe" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/maintenance/solars/port/fore) +"Qh" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Qi" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/crew_quarters/dorms/barracks/female) +"Qj" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/crew_quarters/fitness/locker_room/female) +"Qk" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 8 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Ql" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/external/port/bow) +"Qm" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva/upper) +"Qn" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/fore/upper) +"Qo" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload) +"Qp" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"Qq" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull, +/area/space) +"Qr" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/library/private) +"Qs" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/library/upper) +"Qt" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/security/prison/shower) +"Qu" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/security/prison/mess) +"Qv" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai_upload_foyer) +"Qw" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"Qx" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"Qy" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/security/prison/upper) +"Qz" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/library/printer) +"QA" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"QB" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/security/brig/upper) +"QC" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/starboard/upper) +"QD" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory/upper) +"QE" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/hydroponics/upper) +"QF" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/medical/chemistry) +"QG" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"QH" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/gateway) +"QI" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/security/prison/work) +"QJ" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"QK" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/department/security/upper) +"QL" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/aft/upper) +"QM" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/engine/atmos/upper) +"QN" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"QO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"QP" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/plasteel, +/area/security/prison/upper) +"QQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/camera{ + c_tag = "Security - Prison Mess Hall South"; + dir = 10; + network = list("ss13","Security","Prison") + }, +/turf/open/floor/plasteel/white, +/area/security/prison/mess) +"QR" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/tcommsat/server/upper) +"QS" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall, +/area/maintenance/external/aft) +"QT" = ( +/obj/effect/baseturf_helper/space{ + baseturf = /turf/open/openspace; + name = "openspace baseturf editor" + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"QU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"QV" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"QW" = ( +/obj/effect/turf_decal/trimline/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"QX" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"QY" = ( +/obj/machinery/status_display/ai{ + pixel_y = -32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"QZ" = ( +/obj/machinery/status_display/ai{ + pixel_x = -32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Ra" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Rb" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Rc" = ( +/obj/machinery/status_display/ai{ + pixel_y = 32 + }, +/turf/open/openspace, +/area/hallway/primary/upper) +"Rd" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Re" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/nuke_storage) +"Rf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Rg" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Rh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Ri" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/upper) +"Rk" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"SP" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"Ug" = ( +/obj/machinery/door/firedoor, +/obj/structure/lattice/catwalk, +/turf/open/openspace/airless, +/area/hallway/primary/upper) +"UI" = ( +/obj/machinery/atmospherics/pipe/simple/multiz, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"Vy" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/openspace/airless, +/area/hallway/primary/upper) +"Ya" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/closet/secure_closet/exile, +/turf/open/floor/plasteel, +/area/gateway) +"YH" = ( +/turf/open/openspace/airless, +/area/hallway/primary/upper) +"ZS" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"ZU" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/solars/port/fore"; + dir = 4; + name = "Port Bow Solar APC"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/solars/port/fore) + +(1,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(2,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(3,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(4,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(5,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(6,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(7,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(8,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(9,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(10,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(11,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(12,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(13,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(14,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(15,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(16,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(17,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(18,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(19,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(20,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(21,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(22,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(23,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(24,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(25,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(26,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(27,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(28,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(29,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(30,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(31,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(32,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(33,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(34,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(35,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(36,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(37,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(38,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(39,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(40,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(41,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(42,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(43,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(44,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(45,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(46,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(47,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(48,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(49,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(50,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(51,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(52,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(53,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(54,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(55,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(56,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(57,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(58,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(59,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(60,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(61,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(62,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(63,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(64,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +mt +mt +mt +mt +ac +mt +cn +ac +ac +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(65,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cn +ac +ac +cn +cn +cn +mt +ac +ac +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(66,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +Ql +mI +mI +mI +ac +cn +ac +ac +ac +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(67,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +mI +mI +mM +mM +mI +mI +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(68,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +mI +mJ +mO +mS +np +nA +nA +nA +Cj +Cj +FT +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +vy +FB +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +CJ +QN +lE +be +dw +dw +dw +eP +dw +dw +dw +eP +dw +dw +dw +eP +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(69,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +mI +mK +mP +mW +nu +nw +nB +nC +mT +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +mT +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +Bj +be +be +be +eP +KQ +be +be +eP +be +be +be +eP +be +eP +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(70,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +mI +cc +mQ +nn +nv +nA +nA +nA +Dn +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Cx +jP +Eg +CE +CE +Eg +CE +CE +CE +Eg +CE +CE +CE +CE +Eg +Eg +CE +Eg +Ej +lD +be +hh +hh +hh +hh +be +eP +hh +hh +hh +hh +be +be +eP +eP +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(71,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +mI +mI +mR +mR +mI +mI +bd +bd +Ci +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +be +be +QR +hh +zs +zs +hh +hh +hh +hh +KO +KO +hh +hh +be +be +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(72,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +FF +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +FT +bd +mI +mI +mI +mI +bd +bd +bd +Ci +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +bd +bd +bd +cn +ac +ac +ac +ac +cn +ac +ac +cn +ac +ac +cn +ac +ac +ac +cn +be +be +hh +ib +AZ +IY +Jd +JU +Jy +JU +Ki +KO +KO +hh +be +be +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(73,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ci +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +Cv +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Ce +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +bd +bd +bd +bd +bd +ac +ac +ac +cn +ac +ac +ac +ac +ac +cn +ac +ac +ac +ac +be +KP +hh +ic +IS +Jb +Kn +Kh +KV +KU +KX +KS +KT +hh +Mr +eP +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(74,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ci +mT +Ck +Dm +Dm +Dm +Dm +Dm +Cf +Cf +Cf +Cf +Cf +Cu +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +bd +bd +bd +bd +bd +cn +ac +ac +cn +ac +ac +ac +ac +ac +cn +ac +ac +ac +cn +be +be +hh +rz +IW +Jc +Je +JU +KW +JU +KY +KO +KO +hh +be +be +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(75,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ci +mT +Cl +bd +bd +bd +bd +bd +be +be +be +be +be +FR +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cu +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +be +be +hh +hh +IX +IX +hh +hh +hh +hh +KO +KO +hh +hh +be +be +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(76,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ci +mT +Cl +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +bd +vy +FB +Eh +CJ +CJ +CJ +CJ +Eh +Eh +CJ +CJ +CJ +CJ +Eh +CJ +Eh +Ei +lE +be +hh +hh +hh +hh +be +eP +hh +hh +hh +hh +be +be +eP +eP +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(77,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +cn +ac +cn +ac +ac +bd +FF +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Cj +Ce +mT +Cl +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +mT +mT +mT +mT +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +Bj +be +be +be +eP +be +be +be +eP +be +KR +be +eP +be +eP +dw +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(78,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +ac +ac +ac +cn +ac +ac +bd +Ci +fN +fN +fN +fN +fN +fN +mT +mT +mT +mT +mT +mT +Cl +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +be +be +be +be +be +be +be +be +be +lP +lC +lE +bd +Cx +bd +bd +bd +jP +CE +CE +CE +CE +CE +CE +CE +CE +CE +CE +CE +Ej +lD +be +dw +dw +dw +eP +dw +dw +dw +eP +dw +dw +dw +eP +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(79,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cn +cn +cn +ac +ac +bd +Ci +fN +Ck +Dm +Dm +Dn +fN +Ck +Dm +Dm +Cc +Dm +Dm +FI +bd +bd +vL +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cv +Cj +Cj +CC +CC +CC +CC +CC +CC +CC +CC +CC +CC +CC +CC +FV +be +be +bd +bd +be +be +be +be +be +be +be +be +be +Cw +Bj +EC +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(80,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +bd +bd +Ci +fN +Cl +bd +bd +bd +CQ +CQ +CQ +CQ +CQ +bd +bd +lP +be +lE +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +mT +mT +mT +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +CD +CC +CC +Cj +Cj +CC +CC +CC +CC +CC +CC +CC +CC +CC +Ek +Bj +CD +Cj +FT +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(81,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +cn +ac +ac +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +BZ +Ca +CI +CJ +CL +CL +CL +BQ +CT +sL +CQ +bd +bd +be +fY +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Ck +Dm +Dm +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cu +Bj +Bj +mT +mT +mT +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +mT +Cv +Cj +Cj +Cj +Cj +FT +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(82,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +ac +ac +ac +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +BZ +Ca +Ca +Ca +CM +BR +BP +BR +BR +BT +CQ +bd +bd +be +fY +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +FR +Cf +Cf +Dm +Dm +Dm +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Dm +Dn +mT +mT +mT +mT +mT +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(83,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +cn +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +FC +CE +CE +CE +CL +CL +CL +BS +CV +ZU +CQ +bd +bd +be +fY +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +bd +FU +Dm +Dm +Dm +Dm +Dn +mT +Cv +FT +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(84,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +ac +ac +ac +ac +ac +bd +CQ +CQ +CQ +CQ +Qe +bd +bd +lL +be +lD +be +be +be +be +be +be +be +be +be +be +be +be +be +be +Cw +Bj +Cv +Cj +FT +bd +bd +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +bd +bd +bd +bd +bd +bd +Ci +mT +mT +Cv +FT +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(85,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +ac +ac +ac +ac +ac +Cx +bd +bd +bd +bd +bd +Cz +bd +bd +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +bd +bd +bd +bd +Ci +mT +mT +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +be +be +be +bd +bd +Bc +dw +dw +dw +eP +dw +dw +dw +eP +dw +dw +dw +Bc +bd +bd +bd +bd +bd +FU +Dn +mT +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(86,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Ci +fN +Cl +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +FU +Dm +Dn +mT +Cl +bd +bd +be +be +be +be +be +be +be +be +dw +eP +dw +fb +fb +bd +be +eP +be +be +be +eP +be +be +be +eP +be +Bc +fb +fb +fb +Bc +bd +bd +FU +Dn +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(87,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Ci +Rk +Cl +ac +ac +ac +ac +ac +ac +cn +fb +fb +fb +Bc +fb +fb +fb +Bc +fb +fb +fb +Bc +bd +bd +bd +Bc +fb +fb +fb +Bc +fb +fb +fb +Bc +fb +fb +fb +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +be +be +be +eP +be +bd +bd +Bc +bd +Bc +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(88,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +cn +ac +cn +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +CG +FG +Rk +FH +nk +ac +ac +ac +ac +mt +cn +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +Bc +fb +fb +fb +Bc +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +Ci +mT +Cl +bd +fb +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +fb +Bc +fb +fb +fb +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(89,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +EF +cn +ac +ac +ac +cn +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +CG +CU +CU +CU +nk +CH +bf +Rk +bf +Dk +ac +ac +ac +cn +cn +ac +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +bd +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +Ci +mT +Cy +Bc +fb +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +Bc +Bc +bd +bd +es +es +Ch +Ch +Ch +Ch +Ch +Ch +es +es +bd +bd +bd +Bc +bd +bd +bd +bd +Bc +Ci +mT +fb +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(90,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cn +bd +bd +bd +bd +bd +bd +bd +CG +CU +CU +CU +nk +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +ac +ac +ac +mt +ac +ac +Qa +hj +hj +hj +hj +wR +wR +hj +hj +hj +hj +hj +bd +bd +bd +Qi +yc +yc +yc +yc +yP +yP +yc +yc +yc +yc +yc +Ci +mT +Cl +bd +fb +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +es +es +es +es +av +av +av +av +av +av +av +av +es +es +es +es +es +es +es +bd +bd +Bc +Ci +mT +Cy +Bc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(91,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +ac +ac +ac +bd +bd +CG +CU +CU +CU +nk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +ac +ac +ac +mt +cn +cn +hj +mD +ns +xg +hj +vv +uz +hj +mD +xS +xg +hj +bd +bd +bd +yc +yd +yx +yI +yc +vw +wb +yc +yd +zE +yI +yc +Ci +mT +Cl +bd +Bc +bd +bd +bd +bd +bd +bd +bd +Bc +bd +bd +bd +es +av +av +av +HX +dE +dE +dE +dE +dE +dE +av +av +av +av +EB +Ag +eu +es +Ch +es +Er +Ce +mT +Cv +fb +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(92,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +CG +CU +CU +CU +nk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +ac +ac +ac +mt +ac +ac +hj +mV +vq +wM +hj +xf +uA +hj +mV +xX +GA +hj +bd +bd +bd +yc +ye +yy +yK +yc +zA +wc +yc +zV +zF +yK +yc +Ci +mT +Cl +bd +fb +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +es +es +av +dE +ca +dE +dE +aE +cs +cs +cw +dE +dE +ca +dE +av +eu +eu +eu +En +eu +Eo +mT +mT +mT +mT +fb +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(93,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +CH +bf +fN +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +ac +ac +ac +cn +ac +ac +hj +mD +wB +xg +hj +DC +uB +hj +mD +xW +xg +hj +bd +bd +bd +yc +yd +yy +yI +yc +zB +DF +yc +yd +zF +yI +yc +Ci +mT +Cy +Bc +fb +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +es +av +av +QF +aE +cq +cs +EY +ae +ae +aA +cs +cq +cw +dE +av +av +eu +Ep +es +Ch +es +Dm +Dm +Dn +mT +fb +Cj +Cj +Cj +Cj +FT +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(94,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +CH +bf +fN +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +aY +CX +fN +CX +nc +ac +ac +ac +mt +ac +ac +hj +vp +vq +wK +hj +xN +uB +hj +mU +xX +wK +hj +bd +bd +bd +yc +zK +yy +yL +yc +zB +ym +yc +yf +zF +yL +yc +Ci +mT +Cl +bd +fb +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +es +av +dE +dE +bn +bO +ae +ae +ae +ae +ae +ae +ae +wU +dE +dE +av +eN +ew +es +bd +bd +bd +bd +Ci +mT +mT +mT +mT +mT +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(95,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +aY +CX +Rk +CX +nc +Rk +Rk +fN +Rk +ac +ac +ac +ac +mt +cn +cn +hj +vS +vr +DA +wO +xl +uC +wO +xM +xY +vS +hj +bd +bd +bd +yc +yg +yF +yM +yO +zC +we +yO +zD +zG +yg +yc +Ci +mT +Cl +bd +Bc +Bc +fb +bd +bd +bd +bd +Bc +Bc +bd +bd +es +av +dE +aE +EY +cd +ae +ae +ae +ae +ae +ae +ae +aA +cw +dE +av +es +es +es +bd +bd +bd +bd +FU +Dm +fb +Dm +Dm +Dn +mT +Cl +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(96,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +aY +CX +Rk +CX +nc +Rk +Rk +Rk +Rk +Rk +Rk +CU +Rk +CU +nk +ac +DP +DN +fb +ac +ac +hj +mD +wL +xg +hj +xp +uD +hj +mD +yH +xg +hj +vO +vO +vO +yc +yd +yG +yI +yc +yV +wf +yc +yd +zH +yI +yc +Ci +mT +Cv +Cj +Cj +FT +Bc +bd +bd +bd +bd +fb +bd +bd +bd +es +av +dE +bs +ae +cd +ae +ae +ae +ae +ae +ae +ae +ae +cx +dE +av +es +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +fb +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(97,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +CH +bf +Rk +bf +Dk +aY +CX +Rk +CX +nc +Rk +Rk +fN +Rk +Rk +Rk +CU +Rk +CU +nk +CH +bf +fN +bf +Dk +ac +DQ +bd +Bc +ac +ac +hj +wd +vB +DB +hj +xp +uD +hj +wd +xZ +DB +hj +xG +xG +xG +yc +yw +yG +yN +yc +yV +wf +yc +yw +zH +yN +yc +Ci +mT +mT +mT +mT +Cl +Bc +fb +fb +fb +Bc +Bc +bd +bd +bd +es +av +dE +bs +ae +cd +ae +ae +ae +ae +ae +ae +ae +ae +cx +dE +av +es +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(98,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +aY +CX +Rk +CX +nc +Rk +Rk +fN +fN +fN +Rk +CU +Rk +CU +nk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +bd +bd +bd +fb +bd +bd +hj +mD +wL +xg +hj +xp +uD +hj +mD +yH +xg +hj +DE +Cd +FK +yc +yd +yG +yI +yc +yV +wf +yc +yd +zH +yI +yc +FU +Dm +Dm +Dn +mT +Cl +bd +bd +Bc +bd +bd +bd +bd +bd +bd +es +av +dE +bs +ae +cd +ae +ae +ae +ae +ae +ae +ae +ae +cx +dE +av +es +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(99,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +ac +aK +fN +Rk +fN +fN +Rk +CU +Rk +CU +nk +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +bd +bd +bd +fb +Bc +Bc +hj +vg +xa +wN +hj +xV +uE +hj +yz +yD +wN +hj +zJ +fj +fG +yc +yw +zO +yN +yc +yW +wg +yc +yw +zY +Aa +yc +bd +bd +bd +Ci +mT +Cl +bd +bd +Bc +bd +be +be +be +be +be +es +av +dE +fq +ae +bq +ap +ap +aq +ae +ae +ae +ae +ae +iF +dE +av +es +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(100,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +CG +CU +Rk +CU +nk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +fN +bf +Dk +bd +bd +bd +fb +bd +bd +hj +hj +hj +hj +hj +ya +uF +hj +hj +hj +hj +hj +bR +fj +fG +yc +yc +yc +yc +yc +za +wh +yc +yc +yc +yc +yc +es +bd +bd +es +uP +es +bd +bd +Bc +bd +be +be +be +be +be +es +av +dE +bs +ae +ae +ae +ae +ud +ae +ae +ae +ae +ae +cx +dE +HY +es +bd +es +es +es +es +es +es +es +bd +Bc +Bc +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(101,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +ac +ac +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +bd +bd +bd +Bc +bd +bd +bd +Qc +SP +xo +cm +yi +uG +uH +uI +uJ +uK +uJ +uJ +fk +fH +gd +vj +vb +vY +vZ +wa +wi +xL +zW +zZ +vi +Ir +es +es +bd +Ch +eu +Ch +bd +bd +Bc +bd +be +be +be +be +be +es +av +dE +bs +ae +ae +ae +ae +cd +ae +ae +ae +ae +ae +cx +dE +av +es +es +es +fy +fy +fy +fy +fy +es +bd +bd +fb +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(102,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +bd +bd +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +CH +bf +Rk +bf +Dk +aY +CX +CX +CX +nc +bd +bd +bd +fb +bd +bd +bd +vi +xn +xi +vu +yi +vu +vu +vu +vu +yh +vu +vu +uM +vu +vu +xi +vu +vu +vu +vu +yi +vu +yh +Af +Ac +av +eu +es +es +es +uQ +es +es +Ch +Ch +es +es +be +be +be +be +es +av +dE +bs +ae +ae +ae +ae +cd +ae +ae +ae +ae +ae +cx +dE +av +av +av +Ac +go +mm +mG +mm +ne +es +Bc +Bc +fb +Ci +mT +Cv +FT +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(103,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +CH +bf +Rk +bf +Dk +aY +CX +CX +CX +nc +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +Bc +vi +vo +xm +xr +xO +yp +yr +yr +yr +yu +xQ +yQ +tr +yQ +yT +yU +yT +yT +yT +yl +Ae +yY +zb +xK +vi +vx +av +es +Fw +Cg +eu +es +Ge +Fs +FQ +fy +es +be +be +be +be +es +av +dE +bs +ae +ae +ae +ae +cd +ae +ae +ae +ae +ae +cx +dE +es +es +es +es +gz +es +es +es +fU +es +bd +bd +fb +Ci +mT +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(104,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +bd +bd +CH +bf +Rk +bf +Dk +CH +bf +fN +bf +Dk +aY +CX +CX +CX +nc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +Qb +vf +wV +vf +vf +vf +vf +vf +vf +vf +vf +vf +bR +uO +xH +Qj +wH +wH +wH +wH +wH +wH +wH +wH +Ah +wH +wH +av +es +FW +eu +eu +es +Fm +ED +Hj +FS +es +es +es +es +es +es +av +dE +bs +ae +ae +ae +ae +ce +cj +cj +cj +cj +ck +cx +dE +fy +fy +fy +fy +mg +es +fJ +fL +fQ +es +bd +bd +Bc +FU +Dn +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(105,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +CH +bf +Rk +bf +Dk +aY +CX +CX +CX +nc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +bd +bd +vf +bS +xj +yb +vf +vM +vf +vM +vf +vT +yj +vf +mE +uO +xI +wH +yA +xd +wH +zR +wH +GQ +wH +zX +Ai +Aj +wH +av +es +Fx +eu +eu +Is +eu +Ft +Fu +FS +EB +eu +eu +Gf +eu +no +av +dE +wQ +ae +ae +ae +ae +cf +ae +ae +ae +ae +bP +xb +dE +fy +fy +fD +gm +mk +es +fK +eu +fR +es +bd +bd +fb +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(106,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +bd +bd +aY +CX +CX +CX +nc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +vf +vl +wW +vl +vf +ur +vf +ut +vf +vT +yk +yo +yq +uS +yt +yv +yB +xd +wH +uv +wH +ux +wH +xs +zg +xs +wH +av +es +ew +eu +eu +FE +eu +eu +eu +Fv +FQ +eu +eu +eu +eu +es +av +dE +bM +cr +cr +ct +cr +cu +cv +cr +ct +cr +cr +cy +dE +fy +fy +fO +eu +fC +es +fJ +fM +fS +es +Bc +Bc +fb +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(107,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +ac +bd +vy +bd +vL +vy +vz +DM +vz +vL +vy +bd +vL +vy +vz +vz +vz +vz +vz +DM +vz +vz +vz +vz +vL +bd +bd +bd +bd +fb +Bc +Bc +vf +vm +wX +hT +xu +xk +xk +xk +xk +xk +xP +vf +bR +uO +xH +wH +xT +yJ +yJ +yJ +yJ +yJ +yZ +tA +zh +xw +wH +av +es +es +es +eu +es +no +es +es +es +es +es +BX +es +es +es +av +dE +dE +dE +dE +dE +ag +cg +ar +ag +dE +dE +dE +dE +dE +fy +fy +gj +EE +fC +es +es +es +es +es +bd +bd +fb +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(108,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cn +vz +wC +mT +Br +DK +ac +ac +ac +DO +wC +mT +Br +DK +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +fb +bd +bd +vf +vn +wY +vA +vf +us +vf +uu +vf +vT +zI +vf +bR +uO +xR +wH +zN +xd +wH +uw +wH +uy +wH +xt +zy +xx +wH +av +es +eu +eu +eu +es +eu +es +FX +BY +es +Co +eu +CB +CN +es +av +Ij +EB +Ir +HZ +dE +aj +ch +aA +aC +dE +bd +bd +bd +es +fy +fy +gl +gn +gz +es +bd +bd +bd +bd +bd +Bc +Bc +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(109,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +Bc +Bc +bd +vf +vn +wZ +zi +vf +GO +vf +vN +vf +vT +yn +vf +bR +uO +xH +wH +yE +xd +wH +zS +wH +zS +wH +xt +zz +xx +wH +av +es +eu +Fy +Fz +es +eu +GR +eu +BY +es +CA +CW +CB +CN +es +av +eu +eu +eu +eu +dE +ak +cf +bO +aD +dE +bd +bd +bd +es +fy +fy +fy +fy +mg +es +bd +bd +bd +Bc +Bc +fb +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(110,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +fb +Bc +vf +vf +vf +vf +vf +vf +vf +vf +vf +vV +vW +vf +bR +uO +xH +wH +qw +xe +wH +wH +wH +wH +wH +wH +wH +wH +wH +Hm +es +no +es +es +es +es +es +es +es +es +es +es +es +es +es +av +eu +eu +eu +eu +dE +hM +ci +bV +bt +dE +Np +es +es +es +es +es +es +es +ml +es +bd +bd +bd +fb +bd +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(111,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +Bc +bd +bd +Bc +bd +bd +bd +bd +bd +vf +vf +vf +vf +mF +uV +mH +wH +wH +wH +wH +eu +eu +eu +eu +eu +eu +eu +eu +av +av +av +av +av +av +av +av +av +av +av +av +av +av +HE +av +av +FE +eu +eu +eu +dE +am +bN +bW +zd +dE +et +ex +eE +ty +eG +eG +eG +eG +fE +es +Bc +Bc +Bc +fb +bd +bd +bd +bd +Ci +mT +Cv +FT +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(112,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DP +Cz +bd +bd +bd +bd +bd +bd +fb +Bc +fb +fb +fb +Bc +Bc +bd +bd +bd +bd +bd +vi +bR +uZ +vb +vh +vt +eu +eu +Gh +Ia +bv +no +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +no +bv +dE +an +bP +bX +aH +dE +eu +ez +es +fC +es +es +es +es +es +es +bd +bd +bd +fb +bd +bd +bd +bd +Ci +mT +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(113,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DR +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +bd +bd +vi +bR +xU +xI +vi +vH +bv +bv +bv +bv +bv +qC +rs +Df +rY +sw +sx +ri +sB +ri +sF +ri +ri +Dv +HC +ri +rr +ri +sF +ri +um +ri +rY +DX +wz +ri +Rf +dE +ao +az +aB +bZ +uq +ev +eA +es +fC +av +av +es +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +bd +FU +Dn +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(114,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +Bc +Bc +Bc +vi +bR +xU +xH +vi +Qd +bv +qC +ri +ri +rr +xA +hg +gZ +gZ +gZ +io +gZ +iw +iR +iR +iR +iR +hO +mb +nX +ms +iR +iR +iR +qc +iR +iR +iR +qf +qi +xc +dE +bu +bu +bu +br +dE +ew +eM +es +tz +EB +av +es +es +es +bd +bd +bd +bd +bd +fb +bd +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(115,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +bd +bd +bv +gM +zm +zo +De +qA +qt +qN +gq +gZ +hb +gZ +hl +fm +fm +fm +hy +fm +fm +fm +fm +fm +fm +sj +sn +tT +fm +fm +fm +fm +hy +fm +fm +fm +fm +qp +xz +zp +ri +wJ +bu +bu +dE +bv +bv +bv +tf +bv +av +av +av +es +es +bd +bd +bd +bd +Bc +Bc +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(116,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DR +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +bd +bd +bv +bv +pW +it +bA +bA +bA +fI +dx +fP +fm +fm +fm +fm +fm +fm +fm +hy +fm +fm +fm +fm +fm +fm +sj +sn +tT +fm +fm +fm +fm +hy +fm +fm +fm +fm +qq +iR +iR +iR +rk +ri +ri +Io +ri +ri +Ea +Hn +bv +bv +bv +av +av +es +es +bd +bd +bd +bd +fb +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(117,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DO +vL +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +bd +bv +bv +rh +zl +zn +fI +dx +dx +fP +fm +fm +fm +fm +fm +fm +fm +fm +fm +hy +fm +fm +oh +fm +fm +fm +sj +sn +tT +fm +fm +fm +oh +hy +fm +fm +fm +fm +fm +fm +fm +fm +qq +iR +iR +ms +iR +iR +jS +Ho +ri +Rh +bv +bv +av +av +es +es +Bc +Bc +Bc +fb +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(118,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +Bc +ix +ix +lM +xA +cL +fn +fP +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +Qs +cC +cC +cC +cC +dr +dr +dr +dr +ig +dr +dr +dr +dr +cC +cC +cC +cC +cC +fm +fm +oh +fm +fm +fm +fm +fm +fm +fm +fm +rM +rQ +qi +xz +Hq +bv +bv +av +av +es +es +bd +bd +fb +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(119,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +ix +lM +xA +cL +eQ +fm +fm +fm +fm +fm +fm +fm +oh +fm +bv +bv +bv +bv +cC +cJ +hW +iA +iJ +iO +jf +hR +hR +hR +hR +hR +kg +iO +yR +iA +zr +cJ +cC +bm +bm +bm +bm +In +fm +fm +fm +fm +fm +fm +fm +fm +qq +qi +xz +Ht +bv +bv +av +av +es +bd +bd +Bc +bd +bd +bd +Ci +mT +Cv +FT +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(120,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +ix +ix +ei +cL +eQ +fm +fm +fm +fm +fm +fm +fm +fm +bv +bv +bv +IT +IV +Kt +cC +cK +hY +di +di +di +jg +cJ +cJ +cJ +cJ +cJ +wS +di +di +di +zt +cK +cC +Dz +Dz +Dy +bm +bm +rq +fm +fm +fm +fm +fm +fm +fm +fm +qq +qi +Hu +Hq +bv +bv +av +es +bd +bd +fb +bd +bd +bd +Ci +mT +mT +Cl +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(121,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +bd +ix +lM +xA +cM +fm +fm +fm +fm +fm +fm +bv +bv +bv +bv +bd +lI +IU +IZ +Ku +cC +cK +hY +di +di +di +ka +cJ +cJ +tL +cJ +cJ +xh +di +di +di +zt +cK +cC +Dz +ji +Nw +bm +jh +rq +rq +rq +rq +fm +oh +fm +fm +fm +fm +qq +sz +xz +Hq +bv +av +es +Bc +Bc +fb +bd +bd +bd +FU +Dn +mT +Cl +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(122,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DJ +wF +mT +FA +DL +ac +ac +ac +DP +wF +mT +FA +DL +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +Bc +bv +CS +cL +eQ +fm +fm +fm +fm +bv +bv +bv +CC +Cj +lI +lI +lI +ia +ii +ii +pX +ID +ij +iC +iN +iP +kd +dN +dO +eg +dN +dN +xE +yC +yS +zq +zu +cJ +cC +Dz +Dz +Nx +bm +DG +jp +jv +jE +rq +rq +rq +fm +fm +fm +fm +fm +qq +qi +Hx +bv +av +es +bd +bd +fb +bd +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(123,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +Cx +bd +Cz +Cx +DJ +DN +DJ +Cz +Cx +bd +Cz +Cx +DJ +DJ +DJ +DJ +DJ +DN +DJ +DJ +DJ +DJ +Cz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +ix +ix +ei +cM +fm +fm +fm +fm +bv +bv +Cw +MY +MM +MO +MQ +MT +MW +MX +Qr +co +co +co +IF +co +co +co +co +co +dQ +dQ +eo +dN +iK +Qz +hS +iQ +hS +hS +QE +bm +bm +bm +bm +mY +jq +jw +jF +Ny +jJ +rq +rq +fm +fm +fm +fm +fm +qp +Ec +bv +av +es +es +bd +Bc +bd +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(124,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +ix +lM +xA +cM +fm +fm +fm +fm +bv +Ng +Ek +MZ +Qm +if +if +if +if +ie +co +cp +cH +co +IG +de +dk +dk +iE +co +dU +iG +iH +iI +iK +hS +hX +iS +im +hS +cF +ff +Kp +Nv +iY +jl +jr +jx +xq +Nz +NA +jE +rq +rq +fm +fm +fm +fm +qp +xc +bv +Iq +av +es +bd +Bc +fb +bd +bd +bd +Ci +mT +Cv +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +mt +mt +mt +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(125,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +bd +ix +ix +ei +cL +eQ +fm +fm +fm +bv +bv +Cw +MA +Na +MN +MP +MR +MG +if +ie +co +cz +cI +cN +IH +iB +iD +iD +nl +co +cC +eh +cC +hS +hS +hS +hZ +iS +im +hS +du +fg +gh +ds +iZ +ds +js +jy +jF +jE +jF +jN +jZ +rq +rq +fm +fm +fm +qp +xc +bv +bv +av +es +bd +bd +Bc +Bc +bd +bd +Ci +mT +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +cn +ac +ac +ac +cn +mt +mt +mt +cn +ac +cn +ac +ac +be +cn +ac +cn +mt +mt +mt +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(126,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +vy +bd +vL +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +Bc +ix +lM +xA +cM +fm +fm +fm +fm +bv +be +Cw +ME +if +if +MB +MS +MU +if +ie +co +co +co +co +II +IJ +IK +dG +dK +co +ec +el +hP +hS +hU +hV +tM +iS +in +hS +pM +ds +gi +uc +ja +ds +js +jz +jG +jH +jK +jO +jZ +ds +bm +Ip +fm +fm +qp +xz +Hq +bv +av +es +bd +bd +bd +fb +bd +bd +FU +Dn +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +cn +mt +mt +mt +cn +ac +cn +ac +ac +be +be +be +be +be +be +be +be +be +cn +ac +ac +mt +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(127,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +FB +mT +Br +DM +vz +vz +vz +vz +DM +vz +vz +vz +vz +vz +vL +bd +bd +bd +bd +bd +bd +fb +bd +bd +bv +nH +eO +eU +hy +hy +fm +fm +bv +be +Cw +ME +if +lV +MC +MF +MH +if +ie +co +cz +cI +cO +je +de +tF +dH +dL +co +ed +em +el +hS +iX +iL +iL +iV +jk +hS +dt +fp +gk +iT +jb +jm +jt +jA +jA +jI +jL +jL +kn +lG +bm +qg +qg +qg +th +tk +un +bv +av +es +es +Bc +Bc +fb +bd +bd +bd +Ci +mT +Cv +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +cn +ac +ac +ac +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +QG +be +be +be +ac +ac +ac +be +be +be +be +cn +cn +be +lu +be +cn +cn +be +be +be +be +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(128,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +bv +oc +cM +fm +fm +hy +hy +bv +bv +be +Cw +ME +if +DH +MC +MF +MH +if +ie +co +cp +cH +co +dJ +de +dq +de +dM +co +ee +en +hQ +hS +hU +iM +xJ +ih +il +hS +na +fr +fr +iU +jc +jn +ju +jD +jD +jD +jD +jD +jD +jD +bm +rt +fm +fm +fm +qp +HA +bv +av +av +es +es +bd +fb +bd +bd +bd +Ci +mT +mT +Cv +Cj +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +cn +cn +ac +cn +Ds +ac +ac +cn +cn +ac +ac +cn +ac +ac +ac +ac +ac +ac +mt +cn +be +be +be +be +ac +ac +be +be +cn +cn +cn +cn +jQ +jQ +jQ +jQ +jQ +cn +cn +cn +cn +be +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(129,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +fb +bd +Qd +bv +bv +ei +cM +fm +fm +fm +id +bv +be +be +Cw +ME +if +if +Nd +Nf +MV +if +ie +co +co +co +co +co +dm +co +dI +co +co +cC +cC +cC +hS +hS +hS +hS +hS +hS +hS +fc +jD +jD +iW +jd +jn +KN +jD +jD +jD +jD +jD +jD +jD +bm +fm +fm +fm +fm +qp +xc +bv +bv +av +av +es +bd +Bc +bd +bd +bd +FU +Dn +mT +mT +mT +Cv +Cj +Cj +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +mt +mt +mt +mt +mt +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +mt +ac +be +be +be +be +be +ac +be +cn +ls +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +lw +cn +be +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(130,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DP +Cz +bd +bd +bd +bd +bd +fb +Bc +bv +bI +CO +xA +cM +fm +fm +fm +bv +bv +be +be +Cw +MI +Nb +Nc +Ne +MD +MG +if +MJ +ik +IU +vX +co +dg +cI +co +cI +dg +co +od +nK +nK +nK +nK +nK +nK +nK +om +bm +bm +bm +bm +bm +bm +rn +bm +jD +jD +jD +jD +jD +jD +jD +bm +bm +fm +fm +fm +qp +xz +Rh +bv +bv +av +es +bd +Bc +fb +bd +bd +bd +FU +Dm +Dn +mT +mT +mT +mT +Cv +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +cn +cn +ac +ac +ac +cn +cn +mt +ac +ac +ac +ac +cn +ac +ac +cn +cn +ac +ac +cn +ac +be +be +be +be +be +be +be +be +jQ +jQ +jQ +jQ +ko +ko +ko +ko +ko +jQ +jQ +jQ +jQ +cn +cn +be +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(131,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +fb +bd +bv +ek +cL +do +eQ +fm +fm +fm +bv +bd +bd +bd +lI +lI +lI +if +if +if +if +if +lI +ie +JE +Kw +co +dh +cz +co +cz +dh +co +Kx +lI +lI +lI +lI +lI +lI +lI +ok +nK +nK +nK +nK +Kz +nK +of +bm +jD +jD +jD +jD +jD +jD +jD +jD +bm +fm +fm +fm +qq +qi +HB +HH +Ac +av +es +bd +bd +Bc +Bc +bd +bd +bd +bd +FU +Dm +Dm +Dn +mT +mT +Cv +FT +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +QS +nD +nD +nD +nD +ac +cn +ac +ac +ac +ac +cn +cn +ac +cn +ac +ac +ac +mt +ac +be +be +be +be +be +be +be +jQ +jQ +ko +ks +ko +ko +jQ +jQ +jQ +ko +ko +li +ko +jQ +jQ +cn +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(132,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DR +bd +bd +bd +bd +bd +bd +Bc +bd +bv +ei +cM +fm +fm +fm +fm +fm +bv +bd +bd +bd +lI +JH +iq +lH +iq +IR +Ks +IE +lI +IM +lI +lI +co +co +co +co +co +co +co +Ky +lI +fY +Nm +ac +ac +ac +lI +lI +vs +vs +vs +vs +vs +vs +lI +bm +jD +jD +jD +jM +xv +jD +jD +jD +bm +fm +fm +fm +fm +qq +tZ +HI +bv +eu +es +be +be +be +dw +bd +bd +bd +bd +bd +bd +bd +FU +Dn +mT +mT +Cl +bd +bd +lP +be +be +be +lE +bd +bd +nD +nD +mX +vG +mL +nD +nD +cn +mt +ac +ac +ac +cn +ac +ac +ac +ac +ac +ac +mt +cn +cn +be +be +be +QT +jQ +jQ +jQ +jQ +kp +kt +ko +kA +jQ +kR +jQ +kJ +ko +lj +lp +jQ +jQ +cn +be +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(133,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +fb +bd +bv +ei +cM +fm +fm +fm +fm +fm +bv +Qh +bd +bd +lI +Iz +iq +lI +od +nK +nK +IL +ii +IN +nK +nK +nK +nK +nK +nK +nK +nK +nK +of +lI +fY +Nm +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +bm +bm +bm +bm +bm +bm +bm +bm +bm +QE +fm +fm +fm +fm +fm +ua +Ef +bv +eu +es +eP +eP +eP +dw +bd +bd +bd +bd +bd +bd +bd +bd +FU +Dn +mT +Cl +bd +bd +be +fY +fY +fY +be +bd +bd +nD +nE +nF +sG +sM +sY +nD +ac +mt +cn +ac +ac +cn +ac +ac +ac +ac +ac +ac +mt +ac +ac +be +be +jQ +jQ +jQ +jQ +jQ +jQ +ko +ko +ko +kC +kN +kS +kX +kL +ko +ko +ko +jQ +jQ +cn +cn +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(134,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +fb +Bc +bv +ei +cM +fm +fm +fm +QX +bv +bv +bv +bv +bv +lI +lI +lI +lI +oe +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lB +No +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +bd +bd +bd +QJ +be +be +be +be +QG +bv +bv +Rb +fm +fm +fm +ua +xc +bv +EB +es +be +be +be +dw +bd +bd +bd +bd +bd +bd +bd +bd +bd +Ci +mT +fb +fb +fb +lL +be +be +be +lD +bd +bd +nD +nE +nG +sJ +sN +vF +nD +ac +mt +cn +ac +cn +cn +ac +ac +ac +ac +ac +ac +cn +cn +ac +be +be +jQ +jQ +jV +kb +UI +jQ +ko +kq +ky +kD +kO +kT +kO +kM +ld +kJ +ko +ko +jQ +jQ +cn +be +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(135,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Cb +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +fb +bd +bv +ej +dc +dp +dp +dp +dp +fo +cl +bD +iy +bv +lN +mu +mA +lI +oe +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lz +be +be +be +be +be +lK +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ni +nj +nj +nk +bd +lz +be +be +be +be +be +be +bv +fm +fm +fm +fm +ub +HJ +bv +eu +es +be +be +be +eP +Bc +bd +bd +bd +bd +bd +bd +bd +bd +fb +mT +mT +mT +Cl +bd +bd +bd +bd +bd +bd +bd +nD +nD +Bi +sK +sO +nD +nD +bd +fb +ac +ac +ac +cn +ac +ac +cn +ac +ac +ac +ac +mt +ac +be +be +jQ +jQ +jW +kc +kj +jQ +jQ +ku +kE +kE +kF +lo +kF +kZ +le +jQ +jQ +ko +jQ +jQ +cn +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(136,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +BZ +fY +Eq +DN +DL +ac +ac +DP +DN +DL +ac +ac +ac +DQ +bd +bd +bd +bd +fb +Bc +Bc +bd +bv +ei +dd +rA +rA +rA +rA +hK +bA +bA +dy +bv +lQ +mv +mB +lI +oe +lI +ac +ac +ac +ac +ac +ac +ac +ly +lB +lB +lD +be +be +be +be +be +lL +lB +lB +lB +lJ +ac +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +lz +be +be +be +be +be +be +bv +fm +fm +fm +fm +tQ +xc +bv +eu +es +be +be +be +be +Bc +fb +fb +fb +Bc +fb +fb +fb +Bc +FY +Dm +Dn +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +nD +DI +vC +DI +nD +bd +bd +bd +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +cn +mt +cn +be +lr +jQ +jQ +jX +ke +kk +km +kr +kx +kF +kK +kF +kU +ln +kT +lf +lk +jQ +ko +jQ +jQ +lx +be +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(137,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +FC +mT +FD +bd +Cx +DJ +DJ +Cz +bd +Cx +DJ +DJ +DJ +Cz +bd +bd +bd +bd +Bc +bd +bd +bd +bv +ei +df +fm +fm +fm +fm +bv +dx +gF +IP +bv +lR +mx +mA +lI +Kr +lI +ac +ac +ac +ac +ac +ac +ac +lz +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +be +lL +lJ +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +lz +be +be +be +be +be +be +bv +fm +fm +fm +fm +tQ +xc +bv +eu +es +be +be +be +be +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +bd +Ci +mT +Cl +bd +bd +bd +bd +bd +bd +bd +bd +bd +DI +vD +DI +bd +bd +bd +bd +cn +ac +ac +cn +ac +ac +cn +ac +ac +ac +ac +mt +ac +be +be +jQ +jQ +jY +kf +kl +jQ +jQ +kv +kE +kE +kF +lo +kF +kZ +lg +jQ +jQ +ko +jQ +jQ +cn +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(138,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +Cz +fb +fb +fb +Bc +fb +fb +fb +Bc +fb +fb +fb +Bc +fb +fb +fb +Bc +bd +bd +bd +bv +ug +df +fm +fm +fm +fm +fm +fm +ip +iz +bv +lI +my +lI +lI +oe +lI +ac +ac +ac +ac +ac +ac +ac +oI +oI +oJ +pa +pg +pg +pg +pg +pg +pa +pE +oI +oI +be +lL +lB +lB +lJ +ac +Nq +Eh +Eh +Ns +lB +lB +lD +be +be +be +be +be +be +bv +fm +fm +fm +fm +tQ +xc +bv +Is +lZ +lZ +lZ +lZ +lZ +lZ +lZ +lZ +lZ +lZ +bd +Bc +bd +bd +bd +bd +Bl +Bj +Bn +bd +bd +bd +eH +eH +eH +eH +eH +be +DI +vE +DI +bd +bd +bd +bd +cn +ac +ac +ac +ac +cn +cn +ac +ac +ac +cn +cn +ac +be +be +jQ +jQ +ZS +kh +ki +jQ +ko +kw +kz +kG +kP +kT +kP +la +lh +lc +ko +ko +jQ +jQ +cn +be +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(139,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +mt +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +Bc +bd +bd +bd +bd +bd +bv +ab +df +fm +fm +fm +fm +fm +fm +ip +jo +jU +lS +mz +nK +nK +of +lI +ac +Qp +lB +lB +lB +lB +oI +oI +pV +oO +oV +pb +pb +pb +ph +pb +pm +pF +qd +oI +oI +be +lP +lE +lK +cn +be +fY +fY +lz +be +be +be +be +lP +lC +lC +lC +lC +bv +rt +fm +fm +tO +wP +HK +bv +eu +lZ +Dr +uh +uh +va +Do +AJ +BB +Ba +lZ +be +eP +be +be +be +be +Bl +Bj +Bo +Bk +Bk +Bk +eH +aG +aG +aG +eH +fY +be +mT +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +cn +cn +ac +ac +mt +ac +ac +be +be +jQ +jQ +jQ +jQ +jQ +jQ +ko +ko +ko +kH +kQ +kV +kY +lb +ko +ko +ko +jQ +jQ +cn +cn +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(140,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +aG +bd +PW +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bv +bv +bv +fa +dn +dz +fm +fm +fm +bv +bv +bv +bv +bv +bv +iq +lI +lI +lI +lI +Eh +Nh +lP +lE +oI +oW +oI +oJ +op +oV +oZ +oW +oX +pq +oX +oW +ps +pm +pC +pE +oI +be +bl +bY +lK +be +Nr +Km +Km +Ni +lP +lC +lC +lC +lO +eL +eL +eL +eL +eL +fm +fm +fm +tQ +xF +HL +bv +eu +lZ +AC +ul +ul +vc +Dp +Dg +BC +BH +lZ +lZ +lZ +be +be +be +be +Bl +Bs +Bs +Bs +Bs +Bs +Bt +aG +aG +aG +eH +fY +be +mT +bd +bd +ac +ac +cn +ac +ac +ac +ac +ac +ac +cn +ac +ac +ac +mt +cn +cn +be +be +be +jQ +jQ +jQ +jQ +jQ +lm +kt +ko +kI +jQ +kW +jQ +lc +ko +lj +lq +jQ +jQ +cn +be +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(141,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +ad +ah +ah +ah +ah +ah +aJ +bo +bT +ad +gC +gP +hm +hp +ad +hz +ES +gB +aN +bz +bz +bA +dy +dA +fm +fm +fm +bv +Qh +bd +bd +bd +bv +iq +lI +bd +fY +fY +fY +lz +bl +bY +MK +pp +ML +El +oP +oY +oW +oW +ru +pc +pc +oW +oW +py +pA +pQ +oI +be +lL +lD +lK +cn +be +ac +ac +lz +lK +QH +eL +eL +eL +eL +ha +hf +tG +oa +sD +eS +eS +tR +xc +bv +bv +eu +lZ +Nu +uL +uL +wo +Dq +Dh +BK +BL +Bh +Bw +lZ +be +be +be +be +Bl +Bs +Bp +Bq +Bq +Bq +eH +aG +aG +aG +eH +fY +be +mT +vy +FB +Kk +Kk +Eh +Kk +Kk +Kk +Kk +Kk +Kk +Eh +Kk +Kk +Kk +mt +Kk +Ei +lE +be +be +be +be +be +jQ +jQ +ko +kB +ko +ko +jQ +jQ +jQ +ko +ko +ll +ko +jQ +jQ +cn +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(142,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +mt +ac +ac +ad +aI +ah +ah +ah +ah +aQ +bh +bU +Fn +Fo +Fp +Fq +Fr +cb +gs +gw +gB +aO +bA +bA +bA +dy +dA +fm +fm +fm +ix +bd +bd +bd +bd +ix +iq +vs +jP +Km +Km +Km +Ni +lL +lD +oI +oW +oI +Em +oQ +oW +oW +pc +pc +pc +pc +pc +oW +oW +pG +pR +oI +lP +lC +lC +lO +ac +be +ac +ac +lz +lK +eL +gf +to +to +tq +tu +tB +ys +eL +rj +wu +wu +wt +Ri +bv +eu +eu +lZ +CZ +Ad +Ad +Ar +AE +AK +Ad +Ad +Bh +Bw +lZ +be +be +be +be +Bl +Bs +Bn +be +be +be +eH +eH +eH +eH +eH +be +mc +bd +bd +mT +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +fY +Bj +be +be +be +be +be +be +be +jQ +jQ +jQ +jQ +ko +ko +ko +ko +ko +jQ +jQ +jQ +jQ +cn +cn +be +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(143,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +gB +ah +ah +ah +ah +ah +ah +bp +gA +gB +gE +bQ +hn +hr +gB +hA +hq +gB +aP +bA +bA +cE +dB +dA +fm +fm +fm +ix +bd +bd +bd +bd +ix +iq +vs +bd +ac +ac +ac +lz +lP +lE +be +be +oI +lX +oR +oX +pc +pc +pl +pr +pn +oL +oU +oX +pG +pK +oI +lK +ac +ac +ac +ac +be +cn +cn +lz +lK +eL +gg +gN +gH +gY +hc +tC +tI +ob +sn +sn +sn +ww +HD +bv +Ir +lZ +lZ +Db +Ad +Ad +As +lZ +AL +AU +AW +Bh +Bx +lZ +be +be +be +be +Bl +Bs +Bo +Bk +Bk +Bk +eH +aG +aG +aG +eH +fY +be +bd +Cx +jP +Kl +Kl +Km +Kl +Kl +Kl +Kl +Kl +Kl +Km +Kl +Kl +Kl +mt +Kl +Ej +lD +be +be +be +ac +be +cn +lt +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +jQ +cn +cn +be +be +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(144,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +bd +bd +gB +ah +ah +ah +ah +ah +ah +eK +gA +gB +gJ +hk +ho +ht +gB +hA +hq +gB +aP +bA +bA +bA +dy +dA +fm +fm +fm +ix +bd +bd +bd +bd +ix +iq +vs +bd +ac +ac +ac +lz +bl +bY +be +be +oI +oq +oS +pq +pc +pc +pr +pd +pk +pc +pu +pz +pH +pS +oI +lK +ac +ac +ac +ac +be +be +be +lz +lK +eL +gG +gO +gU +ue +hd +tD +tJ +tP +tY +tY +tY +QU +Ed +bv +lZ +lZ +Ct +Db +Ad +Ad +At +AD +AM +AW +Bb +Bh +Bx +lZ +be +be +be +be +Bl +Bs +Bs +Bs +Bs +Bs +Bt +aG +aG +aG +eH +fY +be +bd +bd +bd +ac +ac +cn +ac +ac +ac +ac +ac +ac +cn +ac +ac +ac +mt +cn +be +be +be +be +ac +ac +be +be +cn +cn +cn +cn +jQ +jQ +jQ +jQ +jQ +cn +cn +cn +cn +be +be +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(145,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +gB +ah +ah +ah +ah +ah +ah +gt +gD +ad +ad +ad +ad +ad +ad +hB +hq +gB +aO +bB +bD +bD +ef +dF +fm +fm +fm +bv +bd +bd +bd +bd +bv +iq +lI +bd +ac +ac +ac +lz +lL +lD +be +be +oI +on +lT +ou +oy +oA +pn +pr +pl +pc +pc +oX +pN +pR +oI +lK +ac +ac +ac +ac +be +cn +cn +lz +lK +eL +gH +gN +gg +uf +Ya +tE +tK +ob +sn +sn +sn +QV +bA +AV +AD +Cp +Ad +Db +Ad +Ad +At +AD +AM +AX +Be +Bu +lZ +lZ +be +be +be +be +Bl +Bs +Bp +Bq +Bq +Bq +eH +aG +aG +aG +eH +fY +be +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +be +be +be +be +ac +ac +ac +be +be +be +be +cn +cn +be +lv +be +cn +cn +be +be +be +be +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(146,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +gB +ah +ah +ah +ah +ah +ah +aQ +gu +ad +PY +fz +at +fv +fV +Fd +Fe +gB +bj +bC +bE +cG +bA +ep +fm +fm +fm +bv +bv +bv +bv +bv +bv +iq +lI +FB +Eh +Eh +Eh +Nh +lP +lE +be +be +oI +lW +oQ +oW +oW +pc +pc +pc +pc +pc +oW +oW +pO +pR +oI +lL +lB +lB +lJ +ac +be +ac +ac +lz +lK +eL +gI +tp +tp +ui +uN +wk +wl +eL +rl +wv +wv +wx +bA +AV +Bg +Cq +Ad +Db +Ad +Ad +At +AD +AM +AY +Bb +Bh +Bx +lZ +be +be +be +be +Bl +Bs +Bn +be +be +be +eH +eH +eH +eH +eH +be +mc +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +cn +mt +mt +mt +cn +ac +cn +ac +ac +be +be +be +be +be +be +be +be +be +cn +ac +ac +mt +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(147,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +gB +ah +ah +ah +ah +ah +ah +ah +ah +ad +EG +GC +eD +fw +PZ +af +hD +af +by +qn +af +af +CP +ep +fm +fm +fm +fm +fm +ip +bA +lH +iq +iq +lI +bd +fY +fY +fY +lz +bl +bY +be +be +oI +oo +os +ov +oW +oW +pc +pc +pc +oW +oW +pv +pP +pQ +oI +be +lP +lE +lK +cn +be +ac +ac +lz +lK +eL +eL +eL +eL +eL +he +hi +wm +wn +sZ +ti +ti +tS +bA +Cr +Cn +BE +BI +Dc +Ad +Ad +As +lZ +AN +AU +AY +Bh +Bx +lZ +be +be +be +be +Bl +Bs +Bo +Bk +Bk +Bk +eH +aG +aG +aG +eH +fY +be +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +cn +ac +ac +ac +cn +mt +mt +mt +cn +ac +cn +ac +ac +ac +cn +ac +cn +mt +mt +mt +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(148,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +bd +bd +gB +ah +ah +ah +ah +ah +ah +ah +ah +ad +EH +GD +at +fw +af +as +hE +hF +hI +qo +gL +by +ei +ep +fm +fm +fm +fm +fm +ip +jR +bv +iq +lI +lI +jP +Km +Km +Km +Ni +lL +lD +be +be +oI +oN +ot +ow +pe +oW +oX +pq +oX +oW +pi +pB +qb +pT +oI +be +bl +bY +lK +be +Nq +Eh +Eh +Nh +lL +lB +lB +lB +lJ +eL +eL +eL +eL +eL +fm +fm +fm +jT +bA +Ab +lZ +Di +Ad +BF +Ad +Ad +Au +AT +AO +Ad +Ad +Bh +By +lZ +be +be +be +be +Bl +Bs +Bs +Bs +Bs +Bs +Bt +aG +aG +aG +eH +fY +be +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +mt +mt +mt +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(149,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +bd +bd +gB +ah +ah +ah +ah +ah +ah +ah +ah +ad +at +at +at +fw +af +au +bc +hG +hH +hJ +gQ +hv +ei +ep +fm +fm +fm +bv +eS +Da +IQ +bv +iq +lI +ac +ac +ac +ac +ac +lA +lC +lC +lC +lC +oI +oI +qa +ox +oz +oB +oC +oE +oB +oB +po +pI +qe +oI +oI +be +lL +lD +lK +cn +be +fY +fY +lz +be +be +be +be +lL +lB +lB +lB +lB +bv +rt +fm +fm +jT +bA +AA +lZ +Cs +Ad +BF +Ad +Ad +Ad +Ad +Ad +Ad +Ad +Bh +By +lZ +be +be +be +be +Bl +Bs +Bp +Bq +Bq +Bq +eH +aG +aG +aG +eH +fY +be +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(150,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +mt +ac +ac +ad +aI +ah +ah +ah +ah +ah +ah +ah +ad +aw +ax +eF +fx +ai +aF +bi +bx +gv +gK +gR +af +ek +er +rK +rK +rK +hL +bA +bA +bA +bv +iq +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +oI +oI +oN +pf +pj +rw +oF +pt +pt +pD +pJ +oI +oI +be +lP +lC +lC +lO +ac +Nr +Km +Km +Ni +be +be +be +be +be +be +be +be +be +bv +fm +fm +fm +jT +Hv +rH +lZ +lZ +Ad +uT +uU +uW +uW +uW +uW +uX +Bf +lZ +lZ +lZ +Bk +Bk +Bk +Bk +Bm +Bs +Bo +Bk +FV +be +eH +eH +eH +eH +eH +be +lD +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(151,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +ad +ah +ah +ah +ah +ah +ah +ah +ah +Es +Es +ay +Es +al +af +af +af +af +af +af +hs +af +ba +eR +rA +rA +rA +hK +cA +bA +jR +bv +iq +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lz +oI +oI +oI +oI +oI +oG +oK +oM +oI +oI +oI +be +lP +lO +ac +ac +ac +ac +ac +ac +ac +lz +be +be +be +be +be +be +be +be +be +bv +fm +fm +fm +tU +HF +CY +Il +lZ +lZ +Gi +lZ +Ad +Av +AF +AP +uY +uY +Bv +Bz +BA +Bs +Bs +Bs +Bs +Bs +Bs +Bj +Bj +lz +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(152,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +ad +ad +ad +ad +ad +ad +PX +Et +Et +Es +EU +Fb +Es +fB +fW +fW +fW +fW +fW +fW +fT +eD +ei +ep +fm +fm +QY +bv +bv +bv +bv +bv +iq +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lA +lC +lC +lE +oX +oD +oH +oD +oT +lP +lC +lC +lC +lO +ac +ac +ac +ac +ac +ac +ac +ac +lz +be +be +be +be +be +be +be +be +bv +bv +Rc +fm +fm +tV +HG +Cm +Fg +Fg +EA +Ga +lZ +lZ +Aw +AG +AQ +lZ +lZ +lZ +lZ +lZ +eH +Bt +eH +eH +eH +Bt +eH +eH +FZ +eP +eP +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(153,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +mt +ac +ac +bd +Bc +bd +bd +bd +Es +Eu +EO +bw +EV +Ff +Es +fF +GH +al +al +al +al +al +al +bv +ei +ep +fm +fm +fm +fm +bv +vk +iq +iq +iq +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lz +oX +pp +pw +pZ +oX +lK +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lA +lC +lE +be +be +be +be +be +be +bv +fm +fm +fm +fm +tt +Hy +bv +bv +bv +bv +Ga +Il +lZ +Ax +AH +AR +lZ +aG +aG +aG +eH +aG +aG +aG +eH +aG +aG +aG +eH +bd +bd +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(154,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +fb +fb +fb +Bc +fb +Es +nI +ER +EP +EI +Fh +Es +fF +al +al +al +al +at +GF +al +bv +ei +ep +fm +fm +fm +fm +bv +IC +iq +lI +vs +lI +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +lz +oX +pp +px +pp +oX +lK +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ng +eI +nc +bd +lz +be +be +be +be +be +be +bv +fm +fm +fm +fm +tt +xz +fh +fh +HM +bv +Ez +EA +lZ +Ay +Ay +Ay +lZ +aG +aG +aG +eH +aG +aG +aG +eH +aG +aG +aG +eH +bd +bd +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(155,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +PV +DJ +bd +bd +bd +bd +bd +bd +Es +EJ +EM +EI +EJ +Fi +Es +fF +aL +GJ +al +at +at +hC +al +bv +ei +eq +dz +fm +fm +fm +bv +IZ +iq +vs +Qh +vs +Qk +eI +eI +eJ +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Nj +oX +oX +oX +oX +Qx +Nt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +bd +bd +lz +be +be +be +be +be +be +bv +fm +fm +fm +tm +tW +bA +bA +bA +Hv +bv +Ga +Im +lZ +Ay +AI +AS +lZ +aG +aG +aG +eH +aG +aG +aG +eH +aG +aG +aG +eH +bd +bd +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(156,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +Es +EK +EI +EQ +EW +Fj +Es +fF +hx +al +al +al +at +GG +al +bv +iv +og +dF +fm +fm +fm +bv +bv +IB +lI +KC +lI +lI +lI +bd +aY +eJ +ac +ac +ac +ac +ac +ac +ac +ac +ac +Nk +fY +Nm +ac +Nk +fY +Nm +ac +ac +ac +ac +ac +ac +ac +ac +ac +ng +nc +bd +bd +bd +lz +be +be +be +be +be +bv +bv +rt +fm +fm +tt +fI +Ee +bv +gV +Hv +Gg +Ga +Fa +QM +lZ +lZ +lZ +lZ +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +Bc +Bc +Bc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(157,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DR +bd +bd +bd +bd +bd +bd +bd +Es +BW +EN +ET +EX +Fk +Es +fF +fZ +al +al +al +at +GZ +al +bv +bv +oi +ep +fm +fm +fm +fm +bv +Ja +Kj +KB +Kj +KJ +lI +bd +bd +aY +eJ +ac +ac +ac +ac +ac +ac +ac +ac +Nk +fY +Nm +ac +Nk +fY +Nm +ac +ac +ac +ac +ac +ac +ac +ac +ac +nh +bd +bd +bd +bd +lz +be +be +be +be +be +bv +fm +fm +fm +fm +tt +dA +fm +fm +QW +Hv +bv +BD +GB +BJ +Fa +bd +nz +eP +fY +fY +fY +eP +fY +fY +fY +eP +fY +fY +fY +be +Bc +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(158,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +bd +bd +bd +bd +Es +Es +Es +Es +Es +Es +Es +GE +at +ga +at +al +at +GK +al +al +bv +ek +ep +fm +fm +hy +hy +bv +bv +Ko +KD +KG +KK +lI +bd +bd +bd +mr +ac +ac +re +ac +ac +ac +ac +ac +Nk +fY +Nm +ac +Nk +fY +Nm +ac +ac +ac +ac +ac +ac +ND +ac +ng +nc +bd +bd +bd +bd +lA +lC +lC +lC +lC +bv +bv +Ug +Ug +YH +YH +tt +dA +fm +fm +QW +HN +bv +BG +Fa +Ga +Fa +bd +nz +ma +be +be +be +Bd +be +be +be +Bd +be +be +be +lD +Bc +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(159,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DO +vz +vz +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +at +aw +fT +at +al +at +iu +at +GL +al +al +bv +oj +eT +eV +hy +hy +fm +id +bv +Kq +KE +KH +KL +lI +bd +bd +bd +qK +qK +qK +qK +qK +ac +ac +ac +ac +Nk +fY +Nm +ac +Nk +fY +Nm +ac +ac +ac +ac +ac +ac +rF +rF +rF +rF +rF +bd +bd +bd +bd +bd +bd +bd +bd +bv +YH +YH +Ug +Ug +tj +tN +Hz +bv +bv +bv +bv +bv +Fg +Fa +Ga +Fa +bd +bd +Bc +nz +nz +nz +nW +nz +nz +nz +nW +nz +nz +nz +nz +Bc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(160,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +fb +bd +at +at +at +at +gb +at +mN +at +at +at +GJ +bv +CR +pL +ep +fm +fm +fm +fm +bv +KA +KF +KI +KM +lI +bd +bd +Qo +qK +qR +qU +sg +ra +ra +ac +ac +ac +Nk +fY +Nm +ac +Nk +fY +Nm +ac +ac +ac +ac +ac +rF +rF +rT +sk +rZ +rF +rF +bd +bd +bd +bd +bd +bd +bd +bv +YH +YH +YH +YH +sm +xF +Rg +bv +Fg +Fg +Fg +Fg +Fg +Fa +BM +Fa +bd +bd +Bc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(161,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Bc +bd +bd +bd +Ci +mT +at +nm +at +bd +at +al +bv +bv +oc +eW +eX +fm +fm +fm +bv +bv +lI +lI +lI +Qn +bd +bd +qK +qO +qS +qV +qS +lF +ra +aa +rB +Qv +Qw +eI +Nn +eI +Nl +eI +Nn +eI +QA +rF +rF +rF +rF +rP +rI +rI +sa +se +rF +rF +bd +bd +bd +bd +bv +bv +bv +YH +YH +YH +YH +sm +Hv +bv +bv +Fg +Fa +Fa +Fa +Fa +Fa +Ga +Fa +bd +bd +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(162,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Bc +bd +bd +Ci +mT +at +nm +at +bd +at +al +al +bv +ql +pL +ep +fm +fm +fm +fm +bv +bv +bd +bd +bd +bd +qj +qK +qP +qT +nb +nd +nd +nZ +rp +EL +rB +bd +bd +bd +bd +bd +bd +bd +bd +rF +rG +rL +sX +rF +rI +rU +rU +sU +rU +sf +rF +NE +bd +bd +bd +bv +YH +YH +YH +YH +YH +YH +sm +Hv +bv +Fg +Fg +Fa +HT +HV +Fg +Fa +Ga +Fa +Bc +Bc +nz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(163,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +fb +Bc +Ci +mT +gc +nm +gc +bd +gc +al +GP +bv +bv +ei +ep +fm +fm +fm +fm +fm +bv +bv +bd +bd +bd +bd +qK +qQ +qS +qX +qS +qR +qW +rf +qI +rB +bd +bd +bd +bd +sr +su +sv +bd +rF +rC +sH +sP +sQ +sR +sS +sT +sV +rU +lY +rF +bd +bd +bd +bv +bv +YH +YH +YH +YH +YH +YH +sm +Hy +bv +Fg +Fg +Fa +HU +HW +Fg +Fc +Ga +Fa +bd +bd +Iy +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(164,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DP +DJ +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Ci +mT +gc +nm +gc +bd +gc +al +al +al +bv +ei +eW +eX +fm +fm +fm +fm +lU +bv +bv +bd +bd +bd +qK +qK +qR +rW +sC +qK +qZ +rv +qJ +rN +rN +rN +qy +sb +ss +AB +qD +sy +sy +sy +uj +rF +rF +rR +rU +rU +sW +rU +sh +rF +bd +bd +bv +bv +YH +YH +YH +YH +YH +rX +tc +so +Hv +bv +Fg +Fa +Fa +Fa +Fa +Fa +Fa +Ga +Fa +bd +bd +eP +be +be +be +be +bd +bd +bd +bd +bd +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(165,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DR +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +gc +nm +gc +bd +gc +GM +al +al +bv +ol +pL +eW +eX +fm +fm +fm +fm +fm +bv +bv +bv +bv +bv +qK +qK +qK +qK +qK +rB +Az +qL +qr +qu +qu +qz +sq +st +sq +qE +qF +qF +sI +uk +NC +rF +rS +rI +rI +sc +se +rF +rF +bv +bv +bv +Vy +YH +YH +YH +YH +YH +sm +xF +Eb +zk +bv +Fg +Fa +bd +bd +bd +bd +Fa +Ga +Fa +bd +bd +Iy +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(166,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DO +vz +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +ny +mT +at +nm +at +GI +at +hC +al +al +bv +bv +pU +pL +ep +fm +fm +fm +fm +fm +fm +fm +fm +fm +bv +bv +Qq +Dl +Dl +Dl +rB +qk +rb +qs +qu +qu +rB +bd +bd +bd +rF +qF +qF +ta +rc +rD +rF +rF +rV +sl +sd +rF +rF +aM +fm +fm +fm +YH +YH +YH +YH +YH +rX +so +Hv +bv +bv +bv +Fg +Fa +bd +bd +bd +bd +Fa +Ga +Fa +Bc +Bc +Iy +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(167,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +at +nm +at +bd +at +GN +al +al +al +bv +bv +ej +eY +eZ +fm +fm +fm +fm +fm +fm +fm +fm +fm +bv +bv +bv +bv +bv +rB +Dj +rd +qs +qu +qu +rB +bd +bd +bd +rF +qF +qF +ta +rg +Re +rF +rF +rF +rF +rF +rF +aM +fm +fm +fm +fm +YH +YH +YH +YH +ry +si +Hs +Hw +bv +Fg +Fg +Fg +Fa +bd +bd +bd +bd +Fa +BN +Fa +bd +bd +Iy +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(168,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Ci +mT +at +al +at +at +at +at +at +at +al +al +bv +ol +pL +fi +fA +eZ +fm +fm +fm +fm +fm +fm +fm +lU +fm +fm +fm +bv +qh +qh +qh +rB +qv +qv +rB +ix +ix +ix +rF +qG +qG +tb +rF +rF +rF +fm +fm +fm +lU +fm +fm +fm +fm +fm +fm +YH +YH +ry +qY +rE +xF +zk +bv +bv +Fg +Fa +Fa +Fa +bd +bd +bd +bd +Fa +Ga +Fa +bd +bd +Bc +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(169,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +at +iu +at +al +hx +al +GU +at +at +al +bv +bv +Dd +pY +pL +fi +fA +fA +eZ +fm +fm +fm +fm +fm +fm +fm +fm +QZ +qm +lU +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +tg +lU +fm +Ra +fm +fm +fm +fm +fm +fm +fm +fm +fm +ry +rJ +qY +rE +xF +sE +zk +bv +bv +ge +HS +Fa +be +be +bd +bd +bd +bd +Fa +Ga +Fa +bd +bd +nz +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(170,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +ny +mT +at +al +eD +al +hC +fz +al +or +at +al +al +bv +bv +bv +ol +pY +pY +pL +gp +eS +dz +fm +fm +fm +fm +fm +fm +fm +qm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +tg +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +ry +qY +rE +GW +DZ +pY +zk +bv +bv +bv +Fg +Fg +Fa +Fa +be +Fa +Fa +Fa +Fa +Fa +Fa +Ga +Fa +Bc +Bc +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(171,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +at +al +at +al +hx +GX +GV +at +at +at +al +al +al +bv +bv +bv +bv +ol +qB +pL +gX +eS +eS +eS +dz +fm +fm +fm +qm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +fm +tg +fm +fm +fm +fm +fm +fm +qx +qM +qY +qY +rE +xF +pY +Hl +bv +bv +bv +bv +Fg +HQ +Fg +Fa +Fa +be +be +Fa +Gc +Gd +Hi +Hh +Hf +Ga +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(172,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +Bc +Ci +mT +at +al +at +at +at +at +at +at +GL +GT +al +at +al +al +al +al +bv +bv +bv +ts +rm +pY +pY +pL +gX +hw +hN +hN +ir +is +is +is +jB +jC +jC +jC +jC +jC +jC +jC +nU +nY +jC +jC +jC +jC +jC +jC +qH +xC +pY +pY +sE +Rg +bv +bv +bv +nt +Fc +Fg +Fg +QL +Fa +Fa +be +be +be +Fa +Gc +Gc +Gd +Gd +Fg +Ga +Fa +bd +bd +Bc +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(173,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +at +al +Ev +nq +FP +GY +Ik +Ik +Ik +Ik +Ik +at +at +zx +at +al +al +al +bv +bv +bv +bv +bv +ol +sE +rO +sp +bk +sA +Du +pY +sE +td +bH +te +pY +Rd +pY +DW +sE +rO +tX +pY +pY +pY +sE +sp +bk +DY +xD +bv +bv +bv +bv +bv +nt +nt +nt +nx +nx +nx +nx +be +be +be +be +be +Fa +Gc +Hg +Gd +Hk +Hf +Ga +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(174,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +fb +ny +mT +at +at +at +at +nr +nr +nr +nr +nr +nr +nr +at +GF +al +at +at +at +al +al +al +al +al +bv +eD +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +bv +tn +bv +nt +nt +Ex +nt +nt +nt +nx +nx +Hp +Hr +nx +Fa +Fa +Fa +Fa +Fa +Fa +Fa +Fa +Fa +Fa +Fa +Ez +Fa +Bc +Bc +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(175,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +fb +Ci +mT +mT +mT +mT +at +nr +nr +nr +nr +nr +nr +nr +at +Ha +al +hC +Hd +at +at +at +at +at +al +al +al +al +GJ +FN +al +al +al +al +al +al +al +Ev +al +GP +al +al +al +al +al +ze +nt +Ew +nt +nt +nt +FO +uo +up +up +up +Ey +up +up +fX +FO +nt +nt +nt +Fc +Fg +Fg +Fg +Fg +HS +Fg +Fg +Fg +DU +EZ +EZ +DV +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(176,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +Bc +nS +tv +Dm +Dn +mT +at +at +at +at +at +at +nr +nr +at +FL +al +hC +He +at +bd +bd +bd +at +at +gc +gc +gc +gc +gc +at +at +gc +gc +gc +gc +at +at +gc +gc +gc +gc +gc +at +QC +dl +dl +dl +dl +dl +dl +dl +dl +dl +dl +dl +dl +dl +nt +Ap +nt +nt +nt +nt +nx +Fa +HQ +Fa +Fa +Fa +Fa +Fa +Fa +Ga +Fa +Fa +Fa +Fa +bd +bd +Bc +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(177,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +CF +ac +BZ +fY +fY +Bj +Bj +Bj +Bj +at +nr +nr +at +FM +al +hC +Hd +at +bd +bd +bd +Bc +bd +bd +bd +eP +be +be +be +eP +be +be +be +eP +be +be +be +eP +be +be +be +be +be +dl +ey +ey +JO +ey +ey +ey +ey +ey +JO +ey +ey +dl +nt +Ap +Gk +nt +nt +nt +nx +HP +Fg +HR +Fa +be +be +be +Fa +Ga +Fa +GS +Ig +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(178,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ds +Ds +FC +CE +CE +tw +Cf +Cu +Bj +at +nr +nr +at +at +at +at +at +at +bd +bd +bd +Bc +bd +bd +bd +Bc +be +be +be +eP +be +be +be +eP +be +be +be +eP +be +be +be +be +be +dl +ey +ey +ey +ey +ey +ey +ey +ey +ey +ey +ey +dl +HO +Ap +nx +Hb +Ex +Hc +nx +Fa +Fa +Fa +Fa +be +be +be +Fa +Ga +Fa +EA +EA +Fa +Bc +Bc +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(179,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +CF +ac +ac +ac +eP +be +Cw +Bj +at +nr +nr +at +Bc +bd +bd +bd +bd +bd +Bc +fb +fb +fb +Bc +fb +fb +dw +eP +dw +dw +dw +eP +dw +dw +dw +eP +dw +dw +dw +eP +be +be +be +dl +ey +ey +ey +ey +ey +ey +ey +ey +ey +ey +ey +dl +nt +Ap +nx +nx +nx +nx +nx +be +be +be +be +be +be +be +Fa +zP +Fc +Fg +Ii +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(180,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +CF +Ds +Ds +Ds +eP +eP +tx +Bj +at +nr +nr +at +Bc +bd +bd +bd +Bc +fb +Bc +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +eP +be +be +be +dl +dl +dl +mi +nf +nO +nV +nO +ro +yX +dl +dl +dl +nt +Ap +nx +QG +be +be +be +be +be +be +be +be +be +be +Fa +Ga +Fa +EA +EA +Fa +bd +bd +Bc +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(181,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +CF +ac +ac +ac +Ds +be +Cw +Bj +at +at +at +at +Iu +Cj +Cj +fb +Iu +Cj +FT +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +dw +eP +be +be +dl +fs +da +wA +dW +dW +dW +dW +dW +Jr +JP +Jl +dl +nt +Ap +nx +be +be +be +be +be +be +be +be +be +be +be +Fa +Al +Fa +If +Ih +Fa +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(182,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ds +Ds +ac +ac +Ds +be +Cw +Bj +mT +mT +mT +mT +mT +mT +mT +mT +mT +mT +Cv +Cj +Cj +FV +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +eP +be +be +dC +dW +mn +fu +Ju +Ju +dV +JL +JL +zv +mn +Jm +dl +nt +Ap +nx +be +be +be +be +be +be +be +be +be +be +be +Fa +Ga +Fa +Fa +Fa +Fa +Bc +Bc +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(183,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +CF +Ds +ac +Ds +ac +FC +CE +uR +It +It +It +uR +It +uR +fb +Dn +mT +mT +mT +mT +CD +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +Iw +FV +be +be +be +dw +be +be +dC +fl +fl +gx +gy +gy +zf +zj +zj +JJ +JK +Jm +dl +Gb +Ap +nx +be +be +be +be +be +be +be +be +be +be +be +Fa +Ga +Fa +QG +be +be +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(184,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +Ds +CF +CF +CF +Ds +CF +fb +fb +Bc +fb +fb +fb +Bc +bd +FU +It +It +Dn +mT +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +Bj +CD +Iw +Iw +FV +dw +eP +eP +dl +Kd +eb +JB +eb +eb +JB +wq +JN +ft +JM +Jn +dl +nt +Ap +nx +be +be +be +be +be +be +be +be +be +be +be +Fa +Ga +Fa +be +be +be +bd +bd +Bc +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(185,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +FU +It +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Iv +Cu +Bj +Bj +Bj +Bj +CD +dw +be +be +QD +aZ +aZ +cV +eC +Js +cV +aZ +aZ +aZ +JQ +Jo +dl +FO +Ap +nx +be +be +be +be +be +be +be +be +be +be +nx +nx +Am +nx +be +be +be +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(186,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +FR +Iv +Iv +Cu +Bj +Bj +Ix +be +be +aZ +bg +cQ +dv +nQ +zT +bb +bb +bb +aZ +JQ +Jo +dl +Ib +Ap +nx +be +be +be +be +be +be +be +be +be +be +nx +Fl +Aq +nx +eP +eP +eP +Bc +Bc +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(187,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +be +be +be +be +be +be +be +be +be +be +be +be +be +be +be +FR +Iv +Iv +dw +be +be +aZ +IA +cR +dD +dX +Jf +Jj +bb +bb +aZ +JV +Jt +dl +Ic +Ap +nx +be +be +be +be +be +be +be +be +be +be +nx +Fl +Aq +nx +be +be +be +bd +bd +nz +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(188,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DQ +bd +bd +bd +DD +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +be +be +be +be +be +be +dw +eP +BV +aZ +aZ +cS +dP +dY +Jg +zT +bb +bb +aZ +JW +Jp +dl +Gk +Ap +nx +be +be +be +nx +nx +nx +nx +nx +nx +be +nx +Fl +Jz +nx +Gl +Gq +Gt +Gw +bd +bd +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(189,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +DO +vz +DM +vz +DK +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +be +be +be +be +be +be +ac +be +dw +be +be +aZ +cD +cT +dR +dZ +Jh +Jk +bb +bb +aZ +JX +Jq +dl +Id +Ap +nx +be +nx +nx +nx +Fl +Fl +Fl +Fl +nx +nx +nx +Fl +Aq +nx +IO +nt +Gu +Gx +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(190,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +cn +eP +be +be +aZ +cP +cU +dS +ea +Ji +bb +bb +bb +aZ +JY +Jq +dl +Ie +Ap +nx +nx +nx +Fl +Fl +Fl +Fl +Fl +Fl +Fl +Fl +Fl +Fl +JA +JG +JI +nt +Gv +nx +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(191,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +be +QB +dl +aZ +aZ +aZ +cV +cW +cY +dT +aZ +aZ +aZ +JY +Jq +dl +dl +Ap +Dw +DT +Gn +An +An +Ao +An +An +An +An +An +Ao +An +JF +nx +Go +Gr +Gu +Gy +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(192,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +eP +dl +Ke +ey +ey +NM +mp +dV +dV +vd +wr +xy +dV +JZ +Jr +wI +dl +Ap +Ex +Gj +nx +nx +nx +nx +nx +nx +nx +nx +nx +nx +nx +nx +nx +Gp +Gs +Gs +Gz +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(193,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +dw +be +be +dl +Ak +hu +mo +NN +NO +NP +NQ +NR +ws +JC +zL +Kg +zL +zM +wE +Dt +Dx +Gm +nx +ac +ac +cn +ac +ac +ac +cn +ac +ac +ac +cn +ac +ac +ac +ac +cn +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(194,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +cn +eP +be +be +dl +eb +eb +jj +JL +fl +Ju +PL +xB +zw +JS +eb +zQ +dW +Ka +dl +QK +nx +nx +nx +ac +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(195,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +dw +be +be +be +Qy +dl +dl +aR +aR +On +Mx +On +aR +aR +dl +dl +dl +dl +dl +dl +dl +Ms +be +be +be +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(196,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +dw +be +be +be +aR +LG +Li +aR +Me +Mj +OO +OM +Mn +aR +bK +Oc +aR +QG +be +be +be +be +be +be +be +mt +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(197,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +mt +mt +mt +eP +eP +be +be +be +aR +aT +bK +aR +aR +Ml +Mx +Ml +aR +aR +ve +Oc +aR +be +be +be +be +be +be +be +be +ac +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(198,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +ac +cn +ac +ac +ac +cn +ac +be +be +be +be +be +aR +LG +mC +nP +Mo +nP +Mb +Mb +Mo +nP +Ma +Oc +aR +be +QI +OA +OA +OA +OA +OA +OA +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(199,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +cn +ac +ac +ac +cB +cB +cB +cB +cB +be +be +aR +mZ +Oo +mf +mf +mf +mf +mf +mf +mf +OG +OJ +aR +be +OA +OB +OX +Pl +PJ +PK +OA +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(200,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +cn +ac +Qt +cB +cB +cB +cB +cB +JD +Lt +PM +cB +cB +aR +aR +aR +NI +nR +vJ +mf +mf +mf +LX +nR +OH +aR +aR +aR +OA +PN +OY +Pp +OY +Pu +OA +cn +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(201,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +cB +cX +fd +fd +cB +vQ +La +Lu +Lb +Ox +cB +aS +aW +aR +Lm +bF +nT +mf +mf +mf +Mu +NF +NT +aR +bJ +PR +OA +OE +OZ +Pq +OZ +Pv +OA +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(202,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cB +cZ +fe +fe +cB +wp +Lb +Lz +Lb +Oy +cB +aU +aX +bL +NV +bK +nT +mf +mf +mf +Mu +Li +NU +bL +aX +Pn +OA +OC +OY +Pr +Pb +Pw +OA +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(203,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +cB +db +gr +gr +tH +wy +Lf +Lk +LM +LM +cB +aR +aR +aR +LL +QO +Pa +mf +mf +mf +LY +QO +Og +aR +aR +aR +OA +OI +OZ +Pz +OZ +Px +OA +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(204,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +cB +dj +me +fe +cB +zc +Lg +Ln +Lg +Lg +cB +Pm +aW +aR +LN +Li +nT +mf +mf +mf +LY +Li +Pj +aR +bJ +PS +OA +OL +Pb +Pz +OY +PO +OA +cn +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(205,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +cB +eB +nJ +nJ +cB +zU +Lj +Lr +Os +Oz +cB +aV +aX +bL +LO +Li +nT +mf +mf +mf +LY +bK +Og +bL +aX +Po +OA +OW +Pd +PA +Ps +Py +OA +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(206,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cB +cB +cB +cB +cB +cB +Ll +Ls +Ou +cB +cB +aR +aR +aR +My +mC +Jv +mf +mf +mf +LZ +Ma +OQ +aR +aR +aR +OA +OA +Pe +PB +Pt +OA +OA +ac +ac +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(207,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +ac +ac +ac +ac +aR +JT +Li +Lv +LP +LU +Mp +Mp +Mv +NB +NG +NK +mf +mf +mf +mf +mf +LY +NX +OU +Of +Oj +Om +Ov +Li +PC +Li +Lq +aR +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(208,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +cn +ac +ac +ac +ac +ac +aR +JT +Li +Lw +bK +LB +LD +Md +LF +LI +NH +nT +mf +mf +mf +mf +mf +NS +Op +OS +OT +OV +OV +Pf +Pi +PD +Li +Pg +aR +cn +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(209,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +mt +cn +cn +Qu +md +md +md +Kv +Lx +Kv +md +md +aR +aR +aR +Oa +nN +vJ +mf +mf +mf +Mw +NJ +Oq +aR +aR +aR +aR +bK +Ok +PE +Li +Pg +aR +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(210,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +md +Mf +vI +DS +mj +Ly +LQ +LQ +md +Jw +bG +bL +NW +Li +Mg +mf +mf +mf +Mu +Li +Or +bL +bG +KZ +aR +aR +aR +PF +aR +aR +aR +ac +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(211,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +mh +mq +vP +vP +Lc +LA +LQ +LQ +md +PP +bJ +aR +NY +Li +Mg +mf +mf +mf +Mu +Li +Ot +aR +bJ +PT +aR +vR +vU +PG +aR +aR +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(212,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +md +mw +wj +JR +Ld +LC +wj +LV +md +aR +aR +aR +NW +QO +Mg +mf +mf +mf +Pc +QP +Ow +aR +aR +aR +aR +Lp +vU +PH +FJ +aR +cn +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(213,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +mh +mw +wj +JR +Le +LE +LR +LV +md +Jx +bG +bL +NW +Li +Mg +mf +mf +mf +LY +Li +OD +bL +bG +Lo +aR +vR +Pk +PI +aR +aR +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(214,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +md +nL +mj +mj +mj +LH +LS +Mm +md +PQ +bJ +aR +NZ +LW +nT +mf +mf +mf +LY +NL +OF +aR +bJ +PU +aR +aR +aR +aR +aR +ac +ac +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(215,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +mh +nM +wD +Kb +Kb +wD +wD +QQ +md +md +md +aR +Oh +Mb +Jv +mf +mf +mf +LZ +nP +OR +aR +aR +aR +aR +ac +ac +cn +ac +cn +mt +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(216,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +md +rx +wG +Kc +Kc +wG +wG +Mh +wG +Kc +md +Mc +Ob +mf +mf +mf +mf +mf +mf +mf +ON +OK +aR +ac +ac +ac +cn +mt +mt +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(217,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +mh +tl +rx +rx +rx +tl +rx +Mi +rx +wG +md +LJ +Oe +Oi +Ol +Ol +Ol +Oi +Oi +Oi +OP +Od +aR +ac +ac +mt +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(218,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +ac +ac +md +tl +wT +Kf +Lh +LK +LT +Mk +Mq +Mt +md +LJ +Li +bK +Mz +Li +vK +Li +Mz +Li +bK +Od +aR +cn +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(219,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +ac +ac +md +md +mh +md +mh +md +mh +md +mh +md +md +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +ac +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(220,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +cn +cn +ac +ac +ac +cn +ac +ac +ac +cn +ac +ac +ac +cn +be +be +be +eP +be +be +be +cn +ac +ac +cn +cn +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(221,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +mt +cn +ac +cn +ac +ac +ac +cn +ac +ac +ac +cn +ac +ac +ac +cn +be +be +be +eP +be +be +be +cn +ac +ac +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(222,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +cn +mt +mt +mt +cn +mt +mt +mt +cn +mt +mt +mt +cn +mt +mt +dw +eP +dw +dw +dw +eP +dw +mt +mt +cn +mt +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(223,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +be +be +be +be +be +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(224,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(225,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(226,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(227,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(228,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(229,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(230,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(231,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(232,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(233,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(234,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(235,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(236,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(237,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(238,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(239,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(240,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(241,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(242,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(243,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(244,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(245,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(246,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(247,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(248,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(249,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(250,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(251,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(252,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(253,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(254,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(255,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} diff --git a/_maps/map_files/Donutstation/job_changes.dm b/_maps/map_files/Donutstation/job_changes.dm new file mode 100644 index 00000000000..6c7150cd1c2 --- /dev/null +++ b/_maps/map_files/Donutstation/job_changes.dm @@ -0,0 +1,7 @@ +#define JOB_MODIFICATION_MAP_NAME "Donutstation" + +/datum/job/geneticist/New() + ..() + MAP_JOB_CHECK + access += ACCESS_MEDICAL + minimal_access += ACCESS_MEDICAL diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 4cfcdb989e5..85a0205b27f 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -284,7 +284,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aaD" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -704,7 +704,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/effect/turf_decal/box/corners{ @@ -2265,7 +2265,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner{ @@ -3584,7 +3584,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/structure/cable, @@ -6117,7 +6117,7 @@ /obj/item/radio/intercom{ pixel_x = -28 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -7588,25 +7588,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/tcommsat/computer) -"amk" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/status_display/evac{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "aml" = ( /obj/machinery/door/airlock/maintenance{ name = "chapel maintenance"; @@ -9208,7 +9189,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aoR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{ @@ -9465,7 +9446,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /turf/open/floor/plasteel/dark, /area/security/courtroom) "apj" = ( @@ -9614,7 +9595,7 @@ /turf/open/floor/plasteel/dark, /area/teleporter) "apw" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, @@ -10841,7 +10822,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -11217,7 +11198,7 @@ /turf/open/floor/plasteel, /area/bridge) "arQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner{ @@ -11405,7 +11386,7 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard/fore) "asg" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/dark, @@ -11921,7 +11902,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -12494,7 +12475,7 @@ }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/neutral, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/plasteel, @@ -12740,7 +12721,7 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner, @@ -13168,7 +13149,7 @@ /obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, @@ -14415,27 +14396,6 @@ "awD" = ( /turf/closed/wall, /area/crew_quarters/fitness/recreation) -"awE" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -24 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "awF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -17334,7 +17294,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /turf/open/floor/plasteel/dark, /area/bridge) "aBl" = ( @@ -17803,7 +17763,7 @@ /area/engine/break_room) "aBU" = ( /obj/effect/turf_decal/tile/neutral, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /turf/open/floor/plasteel/dark, /area/bridge) "aBV" = ( @@ -22116,7 +22076,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/light{ @@ -23083,7 +23043,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1{ @@ -23914,7 +23874,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/airalarm{ @@ -24609,7 +24569,7 @@ /obj/structure/noticeboard{ pixel_y = 28 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/line{ @@ -24799,7 +24759,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/turf_decal/stripes/line{ @@ -25458,7 +25418,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{ @@ -26783,7 +26743,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/line{ @@ -26915,7 +26875,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/blue, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/stripes/corner{ @@ -27027,7 +26987,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/showroomfloor, @@ -27351,7 +27311,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/red, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/structure/noticeboard{ @@ -27656,7 +27616,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/stripes/corner{ @@ -28999,7 +28959,7 @@ }, /area/maintenance/starboard) "aSR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /obj/effect/turf_decal/tile/blue, @@ -29815,7 +29775,7 @@ /obj/machinery/firealarm{ pixel_y = 26 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/structure/disposalpipe/segment{ @@ -29875,7 +29835,7 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aUd" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral{ @@ -31555,7 +31515,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/yellow, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /obj/effect/turf_decal/stripes/corner{ @@ -36150,7 +36110,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/button/door{ @@ -39365,7 +39325,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /turf/open/floor/plasteel, @@ -41350,7 +41310,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/line{ @@ -42709,7 +42669,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /obj/machinery/light_switch{ @@ -42818,7 +42778,7 @@ /turf/closed/wall/rust, /area/quartermaster/storage) "bmo" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/firealarm{ @@ -42978,7 +42938,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -43354,7 +43314,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/blue, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /obj/effect/turf_decal/stripes/corner{ @@ -43961,7 +43921,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "bnZ" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, @@ -47635,7 +47595,7 @@ pixel_y = 22; prison_radio = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-17"; pixel_x = -8; pixel_y = 3 @@ -48118,7 +48078,7 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "btU" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/wood, @@ -48231,7 +48191,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -48467,7 +48427,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner, @@ -49037,7 +48997,7 @@ dir = 1 }, /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/computer/bookmanagement{ pixel_y = 5 }, /obj/machinery/light{ @@ -49472,7 +49432,7 @@ /obj/structure/noticeboard{ pixel_y = 30 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-17"; pixel_x = -8; pixel_y = 3 @@ -50115,7 +50075,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /turf/open/floor/plasteel, @@ -50330,7 +50290,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "bxF" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -50631,7 +50591,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/light, @@ -51430,7 +51390,7 @@ }, /area/ai_monitored/turret_protected/ai_upload) "bzk" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -51485,7 +51445,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/structure/disposalpipe/segment, @@ -51602,7 +51562,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -51986,7 +51946,7 @@ dir = 1 }, /obj/effect/turf_decal/stripes/corner, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/showroomfloor, @@ -52177,7 +52137,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 9 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -52229,7 +52189,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/disposalpipe/segment, @@ -52499,7 +52459,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -52900,7 +52860,7 @@ dir = 1 }, /obj/effect/decal/cleanable/cobweb, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -53282,7 +53242,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 6 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel, @@ -53351,7 +53311,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/machinery/power/apc/highcap/ten_k{ areastring = "/area/bridge"; dir = 8; @@ -53412,7 +53372,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/structure/extinguisher_cabinet{ @@ -53755,7 +53715,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel/dark, @@ -55558,7 +55518,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/machinery/light{ @@ -55831,7 +55791,7 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/airalarm{ @@ -56044,7 +56004,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark/corner{ @@ -56138,7 +56098,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/spider/stickyweb, @@ -56236,7 +56196,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) "bGv" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -57523,7 +57483,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -58104,7 +58064,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -58266,7 +58226,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -58315,7 +58275,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "bJz" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red, @@ -58383,7 +58343,7 @@ }, /obj/effect/turf_decal/tile/neutral, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ @@ -58926,7 +58886,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /turf/open/floor/plasteel/showroomfloor, @@ -58967,7 +58927,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel/showroomfloor, @@ -60322,7 +60282,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -62173,7 +62133,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner{ @@ -62288,7 +62248,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 10 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel, @@ -62328,7 +62288,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bPw" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral, @@ -62549,7 +62509,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 6 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel/dark/corner{ @@ -62568,7 +62528,7 @@ /obj/machinery/status_display/ai{ pixel_x = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -62782,7 +62742,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/red, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -63320,7 +63280,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner{ @@ -63549,7 +63509,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/decal/cleanable/dirt, @@ -64055,7 +64015,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/firealarm{ @@ -64659,7 +64619,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner, @@ -65142,7 +65102,7 @@ dir = 4; pixel_x = -24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -66407,7 +66367,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 9 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, @@ -68104,7 +68064,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/light, @@ -68392,7 +68352,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/plasteel, @@ -68521,7 +68481,7 @@ }, /area/maintenance/port/aft) "bYE" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/tile/blue{ @@ -69039,7 +68999,7 @@ "bZr" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/red, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -69101,7 +69061,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/corner{ @@ -69835,7 +69795,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -69863,7 +69823,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/effect/turf_decal/stripes/corner{ @@ -70047,7 +70007,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/structure/extinguisher_cabinet{ @@ -70203,7 +70163,7 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "caV" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue{ @@ -70588,7 +70548,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/turf_decal/stripes/corner{ @@ -71860,7 +71820,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -72779,7 +72739,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/power/apc/highcap/five_k{ @@ -73019,7 +72979,7 @@ /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-11" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -73534,7 +73494,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/tile/red{ @@ -75200,7 +75160,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/button/door{ @@ -75284,7 +75244,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -75511,7 +75471,7 @@ dir = 1 }, /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/sign/warning/electricshock{ @@ -76574,7 +76534,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -79155,7 +79115,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ desc = "After his promotion, he was transferred to Kilo Station to serve as the gateway's protector."; icon_state = "plant-21"; name = "rodger" @@ -80098,7 +80058,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -80427,7 +80387,7 @@ }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/stripes/corner, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/showroomfloor, @@ -81629,25 +81589,6 @@ icon_state = "panelscorched" }, /area/maintenance/disposal) -"ctz" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "ctA" = ( /turf/closed/wall/rust, /area/maintenance/solars/port/fore) @@ -81700,27 +81641,6 @@ }, /turf/closed/wall, /area/maintenance/starboard/fore) -"ctK" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Gateway"; - name = "command camera" - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "ctL" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1{ @@ -83081,20 +83001,6 @@ }, /turf/open/floor/plasteel, /area/security/main) -"cvM" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/greenglow, -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "cvN" = ( /obj/machinery/gateway/centerstation, /obj/effect/decal/cleanable/dirt, @@ -83102,18 +83008,6 @@ luminosity = 2 }, /area/gateway) -"cvO" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/decal/cleanable/greenglow, -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "cvP" = ( /obj/machinery/door/poddoor{ id = "trash"; @@ -83161,36 +83055,11 @@ dir = 1 }, /obj/effect/turf_decal/stripes/corner, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /turf/open/floor/plasteel, /area/gateway) -"cvT" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/greenglow, -/obj/machinery/gateway, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) -"cvU" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/gateway) "cvV" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -84268,7 +84137,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/light_switch{ @@ -85853,7 +85722,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-17"; pixel_x = 8; pixel_y = 3 @@ -87888,7 +87757,7 @@ /turf/open/floor/engine, /area/engine/engineering) "cDT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/tile/neutral, @@ -88128,7 +87997,7 @@ /area/engine/engineering) "cEr" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/computer/bookmanagement{ pixel_y = 5 }, /obj/effect/turf_decal/tile/neutral, @@ -88671,7 +88540,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/starboard/fore) "cFl" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/tile/neutral, @@ -89016,7 +88885,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -89170,7 +89039,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /turf/open/floor/plasteel/dark/corner{ @@ -89586,9 +89455,8 @@ /area/engine/engineering) "cGO" = ( /obj/machinery/power/emitter/welded{ - icon_state = "emitter"; dir = 4; - + icon_state = "emitter" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -89598,9 +89466,8 @@ /area/engine/engineering) "cGP" = ( /obj/machinery/power/emitter/welded{ - icon_state = "emitter"; dir = 8; - + icon_state = "emitter" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -89713,9 +89580,8 @@ dir = 8 }, /obj/machinery/power/emitter/welded{ - icon_state = "emitter"; dir = 4; - + icon_state = "emitter" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -91869,7 +91735,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/tile/neutral{ @@ -92597,7 +92463,7 @@ /area/space) "cLZ" = ( /obj/effect/decal/cleanable/cobweb, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/turf_decal/stripes/corner{ @@ -92620,7 +92486,7 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "cMb" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/corner{ @@ -92937,7 +92803,7 @@ /turf/open/floor/carpet/green, /area/library) "cMJ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/light_switch{ @@ -93852,7 +93718,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02"; pixel_y = 3 }, @@ -93921,6 +93787,50 @@ /obj/machinery/holopad/secure, /turf/open/floor/wood, /area/crew_quarters/heads/captain) +"fyD" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) +"hCV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/status_display/evac{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) +"iQc" = ( +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "llk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -93932,6 +93842,24 @@ "mvO" = ( /turf/closed/wall, /area/medical/genetics) +"niQ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "nkO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -93943,6 +93871,15 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/lowpressure, /area/space/nearstation) +"oCt" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "prO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -93982,6 +93919,15 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/asteroid/airless, /area/space/nearstation) +"rmI" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "thU" = ( /mob/living/simple_animal/hostile/asteroid/goliath, /turf/open/floor/plating/asteroid/lowpressure, @@ -94002,6 +93948,17 @@ "uZY" = ( /turf/closed/wall/r_wall, /area/medical/genetics) +"vgk" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/gateway) "vQL" = ( /turf/open/floor/plating/airless, /area/solar/starboard/aft) @@ -94009,6 +93966,24 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/lowpressure, /area/space/nearstation) +"xch" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Gateway"; + name = "command camera" + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "xIs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/pinpointer_dispenser, @@ -125486,9 +125461,9 @@ atl aud cFT bEQ -ctz -cvM -awE +fyD +vgk +niQ cfT cvS aUa @@ -125743,9 +125718,9 @@ baH aue avm aUa -amk +hCV cvN -cvT +rmI cwb cyw cwr @@ -126000,9 +125975,9 @@ aXW aug avp aUa -ctK -cvO -cvU +xch +oCt +iQc cwc cpE cvW diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index e4e00a4b71b..fc3c1a2d2e9 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -209,7 +209,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aaB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/decal/cleanable/dirt, @@ -226,7 +226,7 @@ }, /area/security/prison) "aaD" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plasteel, @@ -479,7 +479,7 @@ /area/security/prison) "abl" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison) @@ -755,7 +755,7 @@ /obj/machinery/camera{ c_tag = "Bar" }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/plasteel, @@ -1152,7 +1152,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-13" }, /obj/effect/decal/cleanable/dirt, @@ -2379,7 +2379,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/structure/sign/warning/securearea{ @@ -2668,7 +2668,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "afF" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -11061,7 +11061,7 @@ /turf/open/space, /area/space/nearstation) "aze" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -12089,7 +12089,7 @@ /area/maintenance/starboard/fore) "aBD" = ( /obj/effect/decal/cleanable/cobweb, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-20"; pixel_y = 3 }, @@ -15091,7 +15091,7 @@ name = "Law Office APC"; pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/cable, @@ -16043,7 +16043,7 @@ c_tag = "AI Upload Chamber - Fore"; network = list("aiupload") }, -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /turf/open/floor/plasteel/dark, @@ -18378,7 +18378,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/turf_decal/tile/neutral{ @@ -20311,7 +20311,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "aUY" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/engineering) "aUZ" = ( @@ -20426,7 +20426,7 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "aVt" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-13" }, /obj/effect/turf_decal/stripes/line{ @@ -20744,7 +20744,7 @@ /obj/machinery/airalarm{ pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/tile/neutral{ @@ -20851,7 +20851,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/item/radio/intercom{ @@ -21980,7 +21980,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aYF" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/line{ @@ -22381,7 +22381,7 @@ charge = 100; maxcharge = 15000 }, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -30695,7 +30695,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /turf/open/floor/plasteel, /area/storage/art) "brg" = ( @@ -31953,7 +31953,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "btR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18" }, /obj/effect/turf_decal/stripes/line{ @@ -32619,7 +32619,7 @@ /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bvB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-20" }, /obj/effect/turf_decal/stripes/line{ @@ -34920,7 +34920,7 @@ /turf/open/floor/wood, /area/library) "bBx" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/wood, @@ -37850,7 +37850,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ desc = "A reminder of why we can't have nice things."; name = "Potty the plant" }, @@ -37949,7 +37949,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/yellow, @@ -38146,7 +38146,7 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "bJh" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, @@ -38872,7 +38872,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "bKS" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-06" }, /obj/effect/turf_decal/stripes/line{ @@ -39618,7 +39618,7 @@ icon_state = "map-right-MS"; pixel_y = -32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-03" }, /obj/effect/turf_decal/tile/blue{ @@ -44399,7 +44399,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/tile/blue{ @@ -44491,7 +44491,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/purple, @@ -47599,7 +47599,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "ceI" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-11" }, /obj/effect/turf_decal/tile/yellow, @@ -47685,7 +47685,7 @@ /obj/item/radio/intercom{ pixel_y = -30 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-08" }, /obj/effect/turf_decal/tile/purple, @@ -50371,7 +50371,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "clm" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -50432,7 +50432,7 @@ dir = 1; pixel_y = -24 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -51776,7 +51776,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "coj" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/purple, @@ -55566,7 +55566,7 @@ /obj/machinery/light_switch{ pixel_x = -23 }, -/obj/item/twohanded/required/kirbyplants/dead, +/obj/item/kirbyplants/dead, /obj/structure/cable, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -59314,7 +59314,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/aft) "cFQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -61493,7 +61493,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cJQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/purple{ @@ -62549,7 +62549,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /obj/effect/turf_decal/stripes/line{ @@ -64274,7 +64274,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-04" }, /obj/effect/turf_decal/stripes/line{ @@ -64330,7 +64330,7 @@ /obj/item/radio/intercom{ pixel_x = 29 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/effect/turf_decal/stripes/line{ @@ -66016,7 +66016,7 @@ /area/hallway/primary/central) "cVe" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 8; @@ -68898,7 +68898,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "dik" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/bar{ @@ -69143,7 +69143,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/white, /area/medical/chemistry) "diH" = ( @@ -69157,7 +69157,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/secondary) "diI" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/light_construct/small{ dir = 4 }, @@ -69270,7 +69270,7 @@ c_tag = "Departure Lounge - Port Fore"; dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-24" }, /obj/effect/turf_decal/stripes/line{ @@ -71689,7 +71689,7 @@ /obj/machinery/light_switch{ pixel_x = -26 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/break_room) "hkq" = ( @@ -72450,7 +72450,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/green, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/bar{ @@ -76370,7 +76370,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "vDb" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/maintenance/port/aft) "vEB" = ( diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 095f6cb8872..38f7525c92e 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -106,7 +106,7 @@ /area/mine/laborcamp) "au" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/mine/laborcamp) @@ -344,7 +344,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "bk" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/decal/cleanable/dirt, @@ -3792,7 +3792,7 @@ /area/mine/laborcamp) "rH" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/camera{ @@ -4365,7 +4365,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "Gn" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/mine/living_quarters) "Gz" = ( @@ -4551,7 +4551,7 @@ /turf/open/floor/plasteel/cafeteria, /area/mine/laborcamp) "Lg" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown{ dir = 1 }, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 206c8acd18c..33f2fb21192 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1581,7 +1581,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "afe" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/effect/turf_decal/tile/blue{ @@ -1604,7 +1604,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "afg" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/machinery/camera/motion{ @@ -1673,7 +1673,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "afn" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/machinery/newscaster{ pixel_x = -32 @@ -5245,7 +5245,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/dark, @@ -5501,60 +5501,6 @@ "aoz" = ( /turf/closed/wall, /area/maintenance/fore) -"aoA" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"aoB" = ( -/obj/machinery/gateway{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"aoC" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "aoH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -5834,45 +5780,11 @@ }, /turf/open/space, /area/space/nearstation) -"apq" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "apr" = ( /obj/machinery/gateway/centerstation, /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/gateway) -"aps" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "apt" = ( /obj/structure/chair{ dir = 4 @@ -6005,56 +5917,6 @@ "apT" = ( /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) -"apU" = ( -/obj/machinery/gateway{ - dir = 10 - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) -"apV" = ( -/obj/machinery/gateway, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/gateway) -"apW" = ( -/obj/machinery/gateway{ - dir = 6 - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "apX" = ( /turf/closed/wall, /area/crew_quarters/dorms) @@ -8685,7 +8547,7 @@ /area/hallway/primary/central) "awe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/hallway/primary/central) "awf" = ( @@ -8753,7 +8615,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, @@ -8891,7 +8753,7 @@ }, /area/crew_quarters/fitness/recreation) "awC" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/machinery/power/apc{ @@ -9276,7 +9138,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axF" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/plasteel, @@ -10237,7 +10099,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAo" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /obj/effect/turf_decal/tile/red, @@ -10552,7 +10414,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-20"; pixel_y = 3 }, @@ -10903,7 +10765,7 @@ /turf/open/floor/plasteel/white/corner, /area/crew_quarters/fitness/recreation) "aBY" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /turf/open/floor/plasteel, @@ -10950,7 +10812,7 @@ /area/maintenance/department/security/brig) "aCi" = ( /obj/structure/table/wood, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18"; pixel_y = 12 }, @@ -11037,7 +10899,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -12149,7 +12011,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/head_of_personnel) "aEM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-24" }, /obj/structure/cable, @@ -12767,7 +12629,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) "aGn" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ layer = 3.1 }, /obj/structure/window/reinforced/fulltile, @@ -14058,7 +13920,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aKg" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-04" }, /turf/open/floor/plasteel/white/corner{ @@ -14594,7 +14456,7 @@ /obj/machinery/airalarm{ pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /obj/structure/cable, @@ -14993,7 +14855,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/twohanded/rcl/pre_loaded, +/obj/item/rcl/pre_loaded, /turf/open/floor/plasteel, /area/storage/art) "aMW" = ( @@ -15935,13 +15797,13 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aPy" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plating{ @@ -19544,7 +19406,7 @@ /area/crew_quarters/bar) "aYe" = ( /obj/structure/table/reinforced, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18"; pixel_y = 10 }, @@ -19593,7 +19455,7 @@ "aYi" = ( /obj/structure/table/reinforced, /obj/structure/disposalpipe/segment, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18"; pixel_y = 10 }, @@ -20034,7 +19896,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/kitchen) "aYY" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /turf/open/floor/plasteel/dark, @@ -21017,7 +20879,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "bbd" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/green, @@ -22576,7 +22438,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bfp" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/button/door{ @@ -23007,7 +22869,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "bgv" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-14" }, /obj/effect/turf_decal/tile/neutral{ @@ -23881,7 +23743,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "biP" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/structure/disposalpipe/segment{ @@ -23998,7 +23860,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "bji" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/blue, @@ -24049,7 +23911,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bjn" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/purple, @@ -25100,7 +24962,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "bmw" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /obj/effect/turf_decal/tile/blue{ @@ -25139,7 +25001,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "bmB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_y = 3 }, @@ -25421,7 +25283,7 @@ dir = 8; pixel_x = 28 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-11" }, /obj/machinery/light/small{ @@ -25985,7 +25847,7 @@ /turf/open/floor/plasteel/dark, /area/hallway/primary/aft) "boT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/bot, @@ -26012,7 +25874,7 @@ dir = 1 }, /obj/machinery/light, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/neutral{ @@ -27802,7 +27664,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bsW" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -28126,7 +27988,7 @@ /turf/open/floor/grass, /area/medical/genetics) "btU" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/blue, @@ -28380,7 +28242,7 @@ /area/science/robotics/lab) "buw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/effect/turf_decal/tile/purple{ @@ -28397,7 +28259,7 @@ /turf/open/floor/plasteel/dark, /area/science/explab) "buy" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/effect/turf_decal/tile/purple, @@ -28426,7 +28288,7 @@ /turf/open/floor/plasteel, /area/science/explab) "buD" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-11" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -30221,7 +30083,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants/photosynthetic{ +/obj/item/kirbyplants/photosynthetic{ pixel_y = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -30589,7 +30451,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "bzM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/green, @@ -31304,7 +31166,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hor) "bBu" = ( -/obj/item/twohanded/required/kirbyplants/dead, +/obj/item/kirbyplants/dead, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -31400,7 +31262,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bBB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-20"; pixel_y = 3 }, @@ -32925,7 +32787,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/heads/cmo) "bEH" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-16" }, /obj/machinery/light_switch{ @@ -35109,7 +34971,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bJi" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plating, @@ -36249,7 +36111,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/tile/yellow, @@ -37129,7 +36991,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bNR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green, @@ -39145,7 +39007,7 @@ /turf/open/floor/plasteel, /area/engine/lobby) "bSP" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-02" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -39153,7 +39015,9 @@ pixel_y = -32 }, /obj/effect/turf_decal/tile/yellow, -/obj/machinery/power/apc/auto_name/east, +/obj/machinery/power/apc/auto_name/east{ + pixel_x = 24 + }, /obj/structure/cable, /turf/open/floor/plasteel, /area/engine/lobby) @@ -41464,7 +41328,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bYI" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_y = 3 }, @@ -43046,7 +42910,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "ceK" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-08" }, /turf/open/floor/plasteel/dark, @@ -43992,7 +43856,7 @@ /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) "cjP" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/item/radio/intercom{ @@ -44343,7 +44207,7 @@ /area/library/lounge) "clp" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/plasteel/dark, /area/library) "cls" = ( @@ -45614,7 +45478,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cpT" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -45622,7 +45486,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cpU" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -45834,7 +45698,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "cqE" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-18"; layer = 3 }, @@ -46461,7 +46325,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/structure/cable, @@ -46549,7 +46413,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/dark, @@ -47095,7 +46959,7 @@ /area/chapel/main/monastery) "cvE" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/cable, @@ -47179,7 +47043,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cvM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -47299,7 +47163,7 @@ /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) "cwr" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/power/apc{ @@ -47731,7 +47595,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cyQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/camera{ @@ -47745,7 +47609,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cyR" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/dark, @@ -47997,7 +47861,7 @@ /area/library) "cAs" = ( /obj/structure/table/wood, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05"; pixel_y = 10 }, @@ -48509,6 +48373,21 @@ }, /turf/open/floor/plasteel/dark, /area/science/lab) +"cUu" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/gateway) "cXW" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -48636,7 +48515,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "dpb" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_y = 3 }, @@ -49035,6 +48914,20 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"etw" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "euQ" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -49101,6 +48994,20 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"eIJ" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "eIL" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -49732,7 +49639,7 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "gkR" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, @@ -50031,7 +49938,7 @@ /area/science/xenobiology) "gKz" = ( /obj/structure/table/wood, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22"; pixel_y = 8 }, @@ -51075,7 +50982,7 @@ /obj/structure/sign/plaques/deempisi{ pixel_y = 28 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_y = 3 }, @@ -51169,7 +51076,7 @@ /obj/structure/sign/poster/random{ pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-17" }, /obj/structure/sign/poster/official/random{ @@ -51545,7 +51452,7 @@ /turf/open/floor/carpet, /area/lawoffice) "kxs" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plating, @@ -52816,7 +52723,7 @@ /turf/open/floor/plasteel/white/corner, /area/hallway/primary/central) "nyO" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/light/small{ @@ -53057,7 +52964,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "nVU" = ( -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/floor/plating, /area/maintenance/department/engine) "nWP" = ( @@ -53973,7 +53880,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "pXT" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /obj/machinery/power/apc{ areastring = "/area/lawoffice"; dir = 8; @@ -55739,6 +55646,23 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"uMq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "uMt" = ( /obj/effect/turf_decal/plaque, /turf/open/floor/plating, @@ -56116,6 +56040,20 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/library) +"vQu" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/gateway) "vRi" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -92688,9 +92626,9 @@ aaa aaa aaa lcZ -aoA -apq -apU +vQu +etw +eIJ aqQ arX ata @@ -92945,9 +92883,9 @@ aaa aaa aaa cBU -aoB +uMq apr -apV +cUu aqR arY atb @@ -93202,9 +93140,9 @@ aiT aiS aaa lcZ -aoC -aps -apW +eIJ +etw +vQu aqS arZ atc diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm index 4ec2a489f9d..f3c69a7c466 100644 --- a/_maps/map_files/debug/multiz.dmm +++ b/_maps/map_files/debug/multiz.dmm @@ -908,7 +908,7 @@ "dO" = ( /obj/structure/table, /obj/machinery/light, -/obj/item/twohanded/fireaxe, +/obj/item/fireaxe, /obj/item/extinguisher, /turf/open/floor/plasteel, /area/storage/primary) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e6559a68752..dec334c9389 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -58,7 +58,7 @@ /obj/structure/table/wood{ layer = 3.3 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05"; pixel_y = 4 }, @@ -294,7 +294,7 @@ /area/holodeck/rec_center/winterwonderland) "aT" = ( /obj/structure/table/wood, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05"; pixel_y = 10 }, @@ -1677,19 +1677,19 @@ /obj/item/melee/chainofcommand{ name = "chain whip" }, -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) "ez" = ( /obj/structure/table/wood, /obj/item/scythe, -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) "eA" = ( /obj/structure/table/wood, /obj/item/tailclub, -/obj/item/twohanded/spear, +/obj/item/spear, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) "eB" = ( @@ -2919,11 +2919,11 @@ /turf/open/floor/circuit/green/anim, /area/ctf) "hE" = ( -/obj/item/twohanded/ctf/blue, +/obj/item/ctf/blue, /turf/open/floor/circuit/green/anim, /area/ctf) "hF" = ( -/obj/item/twohanded/ctf/red, +/obj/item/ctf/red, /turf/open/floor/circuit/green/anim, /area/ctf) "hG" = ( @@ -4001,7 +4001,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/control) "ke" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -4104,7 +4104,7 @@ /turf/open/floor/plasteel, /area/centcom/supply) "kk" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral{ @@ -4228,7 +4228,7 @@ /turf/open/floor/plasteel/grimy, /area/centcom/control) "kB" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/firealarm{ @@ -4251,7 +4251,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, @@ -4260,7 +4260,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/grimy, @@ -4301,13 +4301,13 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, /area/centcom/control) "kJ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/airalarm{ @@ -4767,7 +4767,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "lQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/firealarm{ @@ -5204,7 +5204,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "mL" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/green{ @@ -5216,7 +5216,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "mM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -6006,7 +6006,7 @@ /obj/machinery/status_display/ai{ pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-15"; pixel_x = -6; pixel_y = 12 @@ -6219,7 +6219,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "oy" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -6581,7 +6581,7 @@ /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "ph" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/light{ @@ -6815,7 +6815,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/control) "pw" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/structure/extinguisher_cabinet{ @@ -7155,13 +7155,13 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "qd" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/wood, /area/centcom/ferry) "qe" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/light_switch{ @@ -7606,7 +7606,7 @@ /turf/open/floor/plasteel, /area/centcom/supplypod/loading/ert) "rc" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -7802,7 +7802,7 @@ /turf/open/floor/plasteel, /area/centcom/ferry) "rt" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/newscaster{ @@ -7827,7 +7827,7 @@ /turf/open/floor/wood, /area/centcom/ferry) "rv" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/light{ @@ -7987,7 +7987,7 @@ /turf/open/floor/grass, /area/centcom/control) "rL" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ @@ -8742,7 +8742,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, /area/syndicate_mothership/control) "tn" = ( @@ -8986,7 +8986,7 @@ /turf/open/floor/plasteel, /area/centcom/ferry) "tJ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/green{ @@ -9025,7 +9025,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "tO" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green{ @@ -9052,7 +9052,7 @@ /turf/closed/indestructible/riveted, /area/centcom/evac) "tS" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/line{ @@ -9489,7 +9489,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "uT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral{ @@ -9519,7 +9519,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "uV" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -10445,7 +10445,7 @@ /turf/open/floor/plating, /area/centcom/ferry) "xi" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/delivery, @@ -10515,7 +10515,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "xp" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green{ @@ -10527,7 +10527,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "xq" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green, @@ -10546,7 +10546,7 @@ /turf/open/floor/plating, /area/centcom/evac) "xs" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/stripes/line{ @@ -11144,7 +11144,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "zd" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/light{ @@ -11634,7 +11634,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "Am" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/red{ @@ -11655,7 +11655,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "Ap" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/blue, @@ -11888,7 +11888,7 @@ /turf/open/floor/plasteel, /area/centcom/evac) "Ba" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/line, @@ -11956,7 +11956,7 @@ /area/centcom/holding) "Bs" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/wood, /area/centcom/holding) "Bu" = ( @@ -12517,7 +12517,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "Cw" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/power/apc{ @@ -12555,7 +12555,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "Cy" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/machinery/light, @@ -12576,7 +12576,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/ferry) "Cz" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ @@ -12969,7 +12969,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/evac) "Df" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ @@ -13337,7 +13337,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/control) "DV" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green{ @@ -13346,7 +13346,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "DW" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/green, @@ -13932,7 +13932,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Fs" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/green{ @@ -13946,7 +13946,7 @@ }, /area/tdome/tdomeobserve) "Fu" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green, @@ -14031,7 +14031,7 @@ /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) "FG" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/red, @@ -14111,7 +14111,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "FQ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green{ @@ -14193,7 +14193,7 @@ }, /area/tdome/tdomeobserve) "Gg" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/neutral{ @@ -14207,7 +14207,7 @@ }, /area/tdome/tdomeobserve) "Gh" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/red{ @@ -14216,7 +14216,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gi" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/red{ @@ -14229,7 +14229,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gj" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/red, @@ -14258,7 +14258,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gn" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/tile/green, @@ -14268,7 +14268,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Go" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green, @@ -14281,7 +14281,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gp" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/green{ @@ -15220,7 +15220,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "HZ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral, @@ -15310,7 +15310,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Ig" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -16116,7 +16116,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeadmin) "JZ" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/firealarm{ @@ -16148,7 +16148,7 @@ /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) "Kc" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -16987,7 +16987,7 @@ /turf/open/floor/grass, /area/centcom/holding) "Ms" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/wood, @@ -18328,7 +18328,7 @@ /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) "Zs" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index 179bf4ca9d7..d50b07241b3 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -202,7 +202,7 @@ /obj/machinery/status_display/evac{ pixel_x = -32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -225,7 +225,7 @@ /obj/machinery/status_display/ai{ pixel_x = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral, @@ -276,7 +276,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/arrival) "A" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -311,7 +311,7 @@ /turf/open/floor/plasteel, /area/shuttle/arrival) "E" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral, diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base_default.dmm index 1ef8197a06c..8ee566b0343 100644 --- a/_maps/shuttles/aux_base_default.dmm +++ b/_maps/shuttles/aux_base_default.dmm @@ -73,6 +73,7 @@ /area/shuttle/auxillary_base) "X" = ( /obj/machinery/camera{ + c_tag = "Auxiliary Base"; dir = 1; network = list("auxbase") }, diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 2964b0f0e75..fd9517325c8 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -155,7 +155,7 @@ pixel_x = 6; pixel_y = 24 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -342,7 +342,7 @@ /turf/open/floor/plasteel/grimy, /area/shuttle/escape) "bc" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -488,7 +488,7 @@ /turf/open/floor/plasteel/freezer, /area/shuttle/escape) "bG" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -582,7 +582,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bT" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /obj/effect/turf_decal/tile/bar, diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index 93694e6a188..80ae9f41e3a 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -47,7 +47,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "k" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/mineral/titanium/blue, @@ -145,7 +145,7 @@ /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "B" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index e71ea208f84..c26e9e69511 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -420,7 +420,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aM" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/item/radio/intercom{ @@ -446,7 +446,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aP" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /obj/item/radio/intercom{ @@ -948,7 +948,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "ca" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, @@ -974,7 +974,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index bcbcb5f036d..bed1d3bb3d1 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -180,7 +180,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "an" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -209,7 +209,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "ap" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -789,7 +789,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) "bz" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/machinery/button/flasher{ @@ -803,7 +803,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bA" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /obj/effect/turf_decal/tile/neutral{ @@ -1004,7 +1004,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "cb" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -1324,7 +1324,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "cA" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm index d822ca9e9a7..27f3f1b198c 100644 --- a/_maps/shuttles/emergency_imfedupwiththisworld.dmm +++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm @@ -153,7 +153,7 @@ /turf/open/floor/carpet, /area/shuttle/escape) "y" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/item/kirbyplants, /turf/open/floor/wood, /area/shuttle/escape) "z" = ( @@ -163,7 +163,7 @@ /area/shuttle/escape) "A" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/wood, /area/shuttle/escape) "B" = ( diff --git a/_maps/shuttles/emergency_kilo.dmm b/_maps/shuttles/emergency_kilo.dmm index dd026ecc963..815a4e84bf5 100644 --- a/_maps/shuttles/emergency_kilo.dmm +++ b/_maps/shuttles/emergency_kilo.dmm @@ -491,7 +491,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /turf/open/floor/mineral/plastitanium, @@ -515,7 +515,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/mineral/plastitanium, @@ -820,7 +820,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/mineral/titanium/white, @@ -1152,7 +1152,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21" }, /turf/open/floor/mineral/titanium/white, @@ -1178,7 +1178,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/blue, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "applebush" }, /obj/effect/turf_decal/stripes/line, @@ -1281,7 +1281,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-05" }, /turf/open/floor/mineral/titanium/yellow, @@ -1357,7 +1357,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/mineral/titanium/white, diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index 37efe8b2026..1720458e335 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -193,7 +193,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) "as" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -311,7 +311,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aC" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -523,7 +523,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aS" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 9f897437fa5..32a4a6aa1ae 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -87,7 +87,7 @@ /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = 32 }, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 @@ -166,7 +166,7 @@ /area/shuttle/escape) "aB" = ( /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-11" }, /obj/effect/turf_decal/tile/green, @@ -593,7 +593,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "bu" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/mineral/plastitanium/red/brig, diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency_scrapheap.dmm index 226dee7d9d9..ab22018ae31 100644 --- a/_maps/shuttles/emergency_scrapheap.dmm +++ b/_maps/shuttles/emergency_scrapheap.dmm @@ -192,7 +192,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) "aF" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aG" = ( diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency_zeta.dmm index cd91bdbb421..f8c56d17189 100644 --- a/_maps/shuttles/emergency_zeta.dmm +++ b/_maps/shuttles/emergency_zeta.dmm @@ -43,7 +43,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/escape) "j" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /obj/machinery/light{ dir = 1 }, @@ -95,7 +95,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/escape) "s" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/plating/abductor, /area/shuttle/escape) "t" = ( @@ -139,7 +139,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/plating/abductor, /area/shuttle/escape) "z" = ( @@ -254,7 +254,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/escape) "Q" = ( -/obj/item/twohanded/required/kirbyplants/photosynthetic, +/obj/item/kirbyplants/photosynthetic, /obj/machinery/light, /turf/open/floor/plating/abductor, /area/shuttle/escape) diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index 4158efacc57..dfd2bbb9864 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -236,7 +236,7 @@ /turf/open/floor/wood, /area/shuttle/transport) "bd" = ( -/obj/item/twohanded/required/kirbyplants/dead{ +/obj/item/kirbyplants/dead{ desc = "It doesn't look very healthy..."; name = "potted plant" }, diff --git a/_maps/shuttles/hunter_bounty.dmm b/_maps/shuttles/hunter_bounty.dmm index 2e00dd95e7c..16f1c889ae4 100644 --- a/_maps/shuttles/hunter_bounty.dmm +++ b/_maps/shuttles/hunter_bounty.dmm @@ -155,7 +155,7 @@ /area/shuttle/hunter) "E" = ( /obj/structure/table, -/obj/item/twohanded/binoculars, +/obj/item/binoculars, /turf/open/floor/pod/dark, /area/shuttle/hunter) "F" = ( diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm index d0243a18323..2b38f09db6a 100644 --- a/_maps/shuttles/whiteship_kilo.dmm +++ b/_maps/shuttles/whiteship_kilo.dmm @@ -1338,7 +1338,7 @@ /turf/open/floor/carpet, /area/shuttle/abandoned/crew) "cr" = ( -/obj/item/twohanded/required/kirbyplants{ +/obj/item/kirbyplants{ icon_state = "plant-17"; pixel_x = 8; pixel_y = 3 diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index b7e0cf3b02a..86bf7fc16cb 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -93,7 +93,7 @@ /area/survivalpod) "q" = ( /obj/structure/tubes, -/obj/item/twohanded/required/kirbyplants/random, +/obj/item/kirbyplants/random, /turf/open/floor/pod, /area/survivalpod) "r" = ( diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index f2a3de030ca..729d634c6ef 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -129,7 +129,7 @@ /area/survivalpod) "v" = ( /obj/machinery/door/window/survival_pod{ - req_access_txt = "25" + req_access_txt = "25;48" }, /turf/open/floor/pod/dark, /area/survivalpod) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 2a2374e54f6..237b58ec51b 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -54,6 +54,8 @@ #define GELADIKINESIS /datum/mutation/human/geladikinesis #define CRYOKINESIS /datum/mutation/human/cryokinesis #define SPIDER_WEB /datum/mutation/human/webbing +#define MARTYRDOM /datum/mutation/human/martyrdom +#define HARS /datum/mutation/human/headless #define UI_CHANGED "ui changed" #define UE_CHANGED "ue changed" diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index 161bb21d038..128751bcdf7 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -32,17 +32,16 @@ /// (Requires a MC restart to change) #define SS_NO_FIRE 2 -/** subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) */ -/// SS_BACKGROUND has its own priority bracket +/** Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) */ +/// SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump #define SS_BACKGROUND 4 /// subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background)) #define SS_NO_TICK_CHECK 8 /** Treat wait as a tick count, not DS, run every wait ticks. */ -/// (also forces it to run first in the tick, above even SS_NO_TICK_CHECK subsystems) +/// (also forces it to run first in the tick (unless SS_BACKGROUND)) /// (implies all runlevels because of how it works) -/// (overrides SS_BACKGROUND) /// This is designed for basically anything that works as a mini-mc (like SStimer) #define SS_TICKER 16 diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index fb4b4a399a6..44669eb3251 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -79,6 +79,7 @@ #define ACCESS_NETWORK 67 /// Pharmacy access (Chemistry room in Medbay) #define ACCESS_PHARMACY 69 ///Nice. +#define ACCESS_PSYCHOLOGY 70 //WaspStation Begin diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 1a2ed41c69e..299d3139be2 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -87,6 +87,15 @@ #define PLASMA_UPPER_TEMPERATURE (1370+T0C) #define PLASMA_OXYGEN_FULLBURN 10 +//COLD FIRE (this is used only for the freon-o2 reaction, there is no fire still) +#define COLD_FIRE_MAXIMUM_TEMPERATURE_TO_SPREAD 263 //fire will spread if the temperature is -10 °C +#define COLD_FIRE_MAXIMUM_TEMPERATURE_TO_EXIST 273 //fire will start if the temperature is 0 °C +#define COLD_FIRE_SPREAD_RADIOSITY_SCALE 0.95 +#define COLD_FIRE_GROWTH_RATE 40000 +#define FREON_MAXIMUM_BURN_TEMPERATURE 293 +#define FREON_LOWER_TEMPERATURE 30 //minimum temperature allowed for the burn to go, we would have negative pressure otherwise +#define FREON_OXYGEN_FULLBURN 10 + //GASES #define MIN_TOXIC_GAS_DAMAGE 1 #define MAX_TOXIC_GAS_DAMAGE 10 @@ -124,7 +133,7 @@ /// Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. #define BODYTEMP_AUTORECOVERY_MINIMUM 12 ///Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. -#define BODYTEMP_COLD_DIVISOR 6 +#define BODYTEMP_COLD_DIVISOR 15 /// Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. #define BODYTEMP_HEAT_DIVISOR 15 /// The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 5f7ea148e63..323ba823af2 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -77,6 +77,9 @@ #define ANTAG_HUD_BROTHER 22 #define ANTAG_HUD_OBSESSED 23 #define ANTAG_HUD_FUGITIVE 24 +#define ANTAG_HUD_GANGSTER 25 +#define ANTAG_HUD_SPACECOP 26 + // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 856e3e1e718..cc225cd39e5 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -148,9 +148,11 @@ #define COMSIG_MOVABLE_CROSSED "movable_crossed" ///from base of atom/movable/Crossed(): (/atom/movable) #define COMSIG_MOVABLE_UNCROSS "movable_uncross" ///from base of atom/movable/Uncross(): (/atom/movable) #define COMPONENT_MOVABLE_BLOCK_UNCROSS 1 -#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" ///from base of atom/movable/Uncrossed(): (/atom/movable) +#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" ///from base of atom/movable/Uncrossed(): (/atom/movable) #define COMSIG_MOVABLE_BUMP "movable_bump" ///from base of atom/movable/Bump(): (/atom) #define COMSIG_MOVABLE_IMPACT "movable_impact" ///from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) + #define COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH 1 ///if true, flip if the impact will push what it hits + #define COMPONENT_MOVABLE_IMPACT_NEVERMIND 2 ///return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on #define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" ///from base of mob/living/hitby(): (mob/living/target, hit_zone) #define COMSIG_MOVABLE_BUCKLE "buckle" ///from base of atom/movable/buckle_mob(): (mob, force) #define COMSIG_MOVABLE_UNBUCKLE "unbuckle" ///from base of atom/movable/unbuckle_mob(): (mob, force) @@ -204,6 +206,8 @@ #define COMSIG_MOB_DEADSAY "mob_deadsay" // from /mob/say_dead(): (mob/speaker, message) #define MOB_DEADSAY_SIGNAL_INTERCEPT 1 #define COMSIG_MOB_EMOTE "mob_emote" // from /mob/living/emote(): () +#define COMSIG_MOB_SWAP_HANDS "mob_swap_hands" //from base of mob/swap_hand(): (obj/item) + #define COMPONENT_BLOCK_SWAP 1 // /mob/living signals #define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living) @@ -214,6 +218,8 @@ #define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: () #define COMSIG_LIVING_REVIVE "living_revive" //from base of mob/living/revive() (full_heal, admin_revive) #define COMSIG_LIVING_REGENERATE_LIMBS "living_regen_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs) +#define COMSIG_LIVING_ATTACH_LIMB "living_attach_limb" //from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment + #define COMPONENT_NO_ATTACH 1 #define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" //sent from borg recharge stations: (amount, repairs) #define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client) #define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" //sent from borg mobs to itself, for tools to catch an upcoming destroy() due to safe decon (rather than detonation) @@ -233,6 +239,8 @@ #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) #define COMSIG_CARBON_GAIN_ORGAN "carbon_gain_organ" //from /item/organ/proc/Insert() (/obj/item/organ/) #define COMSIG_CARBON_LOSE_ORGAN "carbon_lose_organ" //from /item/organ/proc/Remove() (/obj/item/organ/) +#define COMSIG_CARBON_EQUIP_HAT "carbon_equip_hat" //from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) +#define COMSIG_CARBON_UNEQUIP_HAT "carbon_unequip_hat" //from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) // /mob/living/simple_animal/hostile signals #define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" @@ -242,6 +250,7 @@ #define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" //from base of obj/deconstruct(): (disassembled) #define COMSIG_OBJ_SETANCHORED "obj_setanchored" //called in /obj/structure/setAnchored(): (value) #define COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH "obj_default_unfasten_wrench" //from base of code/game/machinery +#define COMSIG_OBJ_HIDE "obj_hide" //from base of /turf/proc/levelupdate(). (intact) true to hide and false to unhide // /obj/machinery signals #define COMSIG_MACHINERY_BROKEN "machinery_broken" //from /obj/machinery/obj_break(damage_flag): (damage_flag) @@ -268,6 +277,13 @@ #define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args) #define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable, mob/living/crossed) #define COMSIG_ITEM_MICROWAVE_ACT "microwave_act" //called on item when microwaved (): (obj/machinery/microwave/M) +#define COMSIG_ITEM_SHARPEN_ACT "sharpen_act" //from base of item/sharpener/attackby(): (amount, max) + #define COMPONENT_BLOCK_SHARPEN_APPLIED 1 + #define COMPONENT_BLOCK_SHARPEN_BLOCKED 2 + #define COMPONENT_BLOCK_SHARPEN_ALREADY 4 + #define COMPONENT_BLOCK_SHARPEN_MAXED 8 +#define COMSIG_TOOL_IN_USE "tool_in_use" ///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) +#define COMSIG_TOOL_START_USE "tool_start_use" ///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) // /obj/item signals for economy #define COMSIG_ITEM_SOLD "item_sold" //called when an item is sold by the exports subsystem @@ -276,6 +292,7 @@ #define COMSIG_ITEM_SPLIT_VALUE 1 #define COMSIG_ITEM_SPLIT_PROFIT "item_split_profits" //Called when getting the item's exact ratio for cargo's profit. + // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () @@ -391,6 +408,11 @@ #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/component/two_handed signals +#define COMSIG_TWOHANDED_WIELD "twohanded_wield" //from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user) + #define COMPONENT_TWOHANDED_BLOCK_WIELD 1 +#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" //from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user) + // /datum/action signals #define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action) #define COMPONENT_ACTION_BLOCK_TRIGGER 1 diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index e7c9683c2cc..739e03bfbda 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -129,3 +129,18 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 //alternate appearance flags #define AA_TARGET_SEE_APPEARANCE (1<<0) #define AA_MATCH_TARGET_OVERLAYS (1<<1) + +#define KEEP_TOGETHER_ORIGINAL "keep_together_original" + +//setter for KEEP_TOGETHER to allow for multiple sources to set and unset it +#define ADD_KEEP_TOGETHER(x, source)\ + if ((x.appearance_flags & KEEP_TOGETHER) && !HAS_TRAIT(x, TRAIT_KEEP_TOGETHER)) ADD_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL); \ + ADD_TRAIT(x, TRAIT_KEEP_TOGETHER, source);\ + x.appearance_flags |= KEEP_TOGETHER + +#define REMOVE_KEEP_TOGETHER(x, source)\ + REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, source);\ + if(HAS_TRAIT_FROM_ONLY(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL))\ + REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL);\ + else if(!HAS_TRAIT(x, TRAIT_KEEP_TOGETHER))\ + x.appearance_flags &= ~KEEP_TOGETHER diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index 426359a8df4..7983324cde9 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -6,6 +6,7 @@ #define FOOTSTEP_GRASS "grass" #define FOOTSTEP_WATER "water" #define FOOTSTEP_LAVA "lava" +#define FOOTSTEP_MEAT "meat" //barefoot sounds #define FOOTSTEP_WOOD_BAREFOOT "woodbarefoot" #define FOOTSTEP_WOOD_CLAW "woodclaw" @@ -79,6 +80,8 @@ GLOBAL_LIST_INIT(footstep, list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0) )) //bare footsteps lists GLOBAL_LIST_INIT(barefootstep, list( @@ -120,6 +123,8 @@ GLOBAL_LIST_INIT(barefootstep, list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), )) //claw footsteps lists @@ -162,6 +167,8 @@ GLOBAL_LIST_INIT(clawfootstep, list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), )) //heavy footsteps list @@ -178,5 +185,7 @@ GLOBAL_LIST_INIT(heavyfootstep, list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), )) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index ec3b0f98311..819668fb197 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -42,8 +42,8 @@ #define CLOWN (1<<11) #define MIME (1<<12) #define ASSISTANT (1<<13) -#define LT (1<<14) //WASPSTATION EDIT - LIEUTENANT -#define PRISONER (1<<15) +#define PRISONER (1<<14) +#define PSYCHOLOGIST (1<<15) #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 @@ -60,36 +60,35 @@ #define JOB_DISPLAY_ORDER_ASSISTANT 1 #define JOB_DISPLAY_ORDER_CAPTAIN 2 #define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 -#define JOB_DISPLAY_ORDER_LIEUTENANT 4 // WaspStation Begin - Lieutenant -#define JOB_DISPLAY_ORDER_QUARTERMASTER 5 -#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 6 -#define JOB_DISPLAY_ORDER_SHAFT_MINER 7 -#define JOB_DISPLAY_ORDER_BARTENDER 8 -#define JOB_DISPLAY_ORDER_COOK 9 -#define JOB_DISPLAY_ORDER_BOTANIST 10 -#define JOB_DISPLAY_ORDER_JANITOR 11 -#define JOB_DISPLAY_ORDER_CLOWN 12 -#define JOB_DISPLAY_ORDER_MIME 13 -#define JOB_DISPLAY_ORDER_CURATOR 14 -#define JOB_DISPLAY_ORDER_LAWYER 15 -#define JOB_DISPLAY_ORDER_CHAPLAIN 16 -#define JOB_DISPLAY_ORDER_AI 17 -#define JOB_DISPLAY_ORDER_CYBORG 18 -#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 19 -#define JOB_DISPLAY_ORDER_STATION_ENGINEER 20 -#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 21 -#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 22 -#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 23 -#define JOB_DISPLAY_ORDER_PARAMEDIC 24 -#define JOB_DISPLAY_ORDER_CHEMIST 25 -#define JOB_DISPLAY_ORDER_GENETICIST 26 -#define JOB_DISPLAY_ORDER_VIROLOGIST 27 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 28 -#define JOB_DISPLAY_ORDER_SCIENTIST 29 -#define JOB_DISPLAY_ORDER_ROBOTICIST 30 +#define JOB_DISPLAY_ORDER_QUARTERMASTER 4 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 6 +#define JOB_DISPLAY_ORDER_BARTENDER 7 +#define JOB_DISPLAY_ORDER_COOK 8 +#define JOB_DISPLAY_ORDER_BOTANIST 9 +#define JOB_DISPLAY_ORDER_JANITOR 10 +#define JOB_DISPLAY_ORDER_CLOWN 11 +#define JOB_DISPLAY_ORDER_MIME 12 +#define JOB_DISPLAY_ORDER_CURATOR 13 +#define JOB_DISPLAY_ORDER_LAWYER 14 +#define JOB_DISPLAY_ORDER_CHAPLAIN 15 +#define JOB_DISPLAY_ORDER_AI 16 +#define JOB_DISPLAY_ORDER_CYBORG 17 +#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 18 +#define JOB_DISPLAY_ORDER_STATION_ENGINEER 19 +#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 20 +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 21 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 22 +#define JOB_DISPLAY_ORDER_PARAMEDIC 23 +#define JOB_DISPLAY_ORDER_CHEMIST 24 +#define JOB_DISPLAY_ORDER_VIROLOGIST 25 +#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 26 +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27 +#define JOB_DISPLAY_ORDER_SCIENTIST 28 +#define JOB_DISPLAY_ORDER_ROBOTICIST 29 +#define JOB_DISPLAY_ORDER_GENETICIST 30 #define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 31 #define JOB_DISPLAY_ORDER_WARDEN 32 #define JOB_DISPLAY_ORDER_DETECTIVE 33 #define JOB_DISPLAY_ORDER_SECURITY_OFFICER 34 -#define JOB_DISPLAY_ORDER_BRIG_PHYS 35 //WaspStation Edit - Brig Physicians -#define JOB_DISPLAY_ORDER_PRISONER 36 +#define JOB_DISPLAY_ORDER_PRISONER 35 diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 967374c086e..a980fa2b42e 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -4,11 +4,22 @@ #define CLICKCATCHER_PLANE -99 #define PLANE_SPACE -95 +#define PLANE_SPACE_RENDER_TARGET "PLANE_SPACE" #define PLANE_SPACE_PARALLAX -90 +#define PLANE_SPACE_PARALLAX_RENDER_TARGET "PLANE_SPACE_PARALLAX" + + +#define OPENSPACE_LAYER 17 //Openspace layer over all +#define OPENSPACE_PLANE -4 //Openspace plane below all turfs +#define OPENSPACE_BACKDROP_PLANE -3 //Black square just over openspace plane to guaranteed cover all in openspace turf + #define FLOOR_PLANE -2 +#define FLOOR_PLANE_RENDER_TARGET "FLOOR_PLANE" #define GAME_PLANE -1 +#define GAME_PLANE_RENDER_TARGET "GAME_PLANE" #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals +#define BLACKNESS_PLANE_RENDER_TARGET "BLACKNESS_PLANE" #define SPACE_LAYER 1.8 //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define @@ -80,20 +91,34 @@ #define MASSIVE_OBJ_LAYER 11 #define POINT_LAYER 12 + +#define EMISSIVE_BLOCKER_PLANE 12 +#define EMISSIVE_BLOCKER_LAYER 12 +#define EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE" + +#define EMISSIVE_PLANE 13 +#define EMISSIVE_LAYER 13 +#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE" + +#define EMISSIVE_UNBLOCKABLE_PLANE 14 +#define EMISSIVE_UNBLOCKABLE_LAYER 14 +#define EMISSIVE_UNBLOCKABLE_RENDER_TARGET "*EMISSIVE_UNBLOCKABLE_PLANE" + #define LIGHTING_PLANE 15 #define LIGHTING_LAYER 15 +#define LIGHTING_RENDER_TARGET "LIGHT_PLANE" #define ABOVE_LIGHTING_PLANE 16 #define ABOVE_LIGHTING_LAYER 16 - -#define FLOOR_OPENSPACE_PLANE 17 -#define OPENSPACE_LAYER 17 +#define ABOVE_LIGHTING_RENDER_TARGET "ABOVE_LIGHTING_PLANE" #define BYOND_LIGHTING_PLANE 18 #define BYOND_LIGHTING_LAYER 18 +#define BYOND_LIGHTING_RENDER_TARGET "BYOND_LIGHTING_PLANE" #define CAMERA_STATIC_PLANE 19 #define CAMERA_STATIC_LAYER 19 +#define CAMERA_STATIC_RENDER_TARGET "CAMERA_STATIC_PLANE" //HUD layer defines @@ -104,11 +129,15 @@ #define BLIND_LAYER 20.3 #define CRIT_LAYER 20.4 #define CURSE_LAYER 20.5 +#define FULLSCREEN_RENDER_TARGET "FULLSCREEN_PLANE" #define HUD_PLANE 21 #define HUD_LAYER 21 +#define HUD_RENDER_TARGET "HUD_PLANE" #define ABOVE_HUD_PLANE 22 #define ABOVE_HUD_LAYER 22 +#define ABOVE_HUD_RENDER_TARGET "ABOVE_HUD_PLANE" #define SPLASHSCREEN_LAYER 23 #define SPLASHSCREEN_PLANE 23 +#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE" diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 0b60c5701cb..667818c6e15 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -112,3 +112,8 @@ #define FLASH_LIGHT_DURATION 2 #define FLASH_LIGHT_POWER 3 #define FLASH_LIGHT_RANGE 3.8 + +/// Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all. +#define EMISSIVE_BLOCK_GENERIC 1 +/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. +#define EMISSIVE_BLOCK_UNIQUE 2 diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index 601df51d77f..11f16d9ecb8 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -9,3 +9,5 @@ #define MATERIAL_ADD_PREFIX (1<<1) #define MATERIAL_NO_EFFECTS (1<<2) #define MATERIAL_AFFECT_STATISTICS (1<<3) + +#define MATERIAL_SOURCE(mat) "[mat.name]_material" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 6b30b1da05f..7d7f25c9049 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -114,6 +114,10 @@ #define FACING_EACHOTHER 2 #define FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR 3 //Do I win the most informative but also most stupid define award? +//stages of shoe tying-ness +#define SHOES_UNTIED 0 +#define SHOES_TIED 1 +#define SHOES_KNOTTED 2 //Cache of bloody footprint images //Key: @@ -325,6 +329,8 @@ GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE))) #define CLOCK_SILICONS 22 #define CLOCK_PROSELYTIZATION 23 #define SHUTTLE_HIJACK 24 +#define GANG_DESTROYED 25 +#define GANG_OPERATING 26 #define FIELD_TURF 1 #define FIELD_EDGE 2 @@ -473,10 +479,14 @@ GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE))) #define FALL_NO_MESSAGE (1<<1) //Used to suppress the "[A] falls through [old_turf]" messages where it'd make little sense at all, like going downstairs. #define FALL_STOP_INTERCEPTING (1<<2) //Used in situations where halting the whole "intercept" loop would be better, like supermatter dusting (and thus deleting) the atom. -// WaspStation Begin - Bone flags -#define BONE_FLAG_NO_BONES 0 -#define BONE_FLAG_NORMAL 1 -#define BONE_FLAG_BROKEN 2 -#define BONE_FLAG_SPLINTED 3 -// WaspStation End +//Religion +#define HOLY_ROLE_PRIEST 1 //default priestly role +#define HOLY_ROLE_HIGHPRIEST 2 //the one who designates the religion + +#define ALIGNMENT_GOOD "good" +#define ALIGNMENT_NEUT "neutral" +#define ALIGNMENT_EVIL "evil" + +// The alpha we give to stuff under tiles, if they want it +#define ALPHA_UNDERTILE 128 diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 2069ff63dab..717f9bae386 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -7,6 +7,12 @@ #define PLAYER_READY_TO_PLAY 1 #define PLAYER_READY_TO_OBSERVE 2 +//Game mode list indexes +#define CURRENT_LIVING_PLAYERS "living_players_list" +#define CURRENT_LIVING_ANTAGS "living_antags_list" +#define CURRENT_DEAD_PLAYERS "dead_players_list" +#define CURRENT_OBSERVERS "current_observers_list" + //movement intent defines for the m_intent var #define MOVE_INTENT_WALK "walk" #define MOVE_INTENT_RUN "run" diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index b0d8707f7bf..6b8ef7bd567 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -1,12 +1,3 @@ -#define MOVESPEED_DATA_INDEX_PRIORITY 1 -#define MOVESPEED_DATA_INDEX_FLAGS 2 -#define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3 -#define MOVESPEED_DATA_INDEX_MOVETYPE 4 -#define MOVESPEED_DATA_INDEX_BL_MOVETYPE 5 -#define MOVESPEED_DATA_INDEX_CONFLICT 6 - -#define MOVESPEED_DATA_INDEX_MAX 6 - //flags #define IGNORE_NOSLOW (1 << 0) @@ -15,69 +6,7 @@ #define MOVE_CONFLICT_JETPACK "JETPACK" //ids +#define MOVESPEED_ID_SANITY "sanity_component" -#define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN" -#define MOVESPEED_ID_MOB_GRAB_STATE "MOB_GRAB_STATE" -#define MOVESPEED_ID_MOB_EQUIPMENT "MOB_EQUIPMENT" -#define MOVESPEED_ID_MOB_GRAVITY "MOB_GRAVITY" -#define MOVESPEED_ID_CONFIG_SPEEDMOD "MOB_CONFIG_MODIFIER" - -#define MOVESPEED_ID_SLIME_REAGENTMOD "SLIME_REAGENT_MODIFIER" -#define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER" -#define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER" - -#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS" - -#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB" - -#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD" -#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS" -#define MOVESPEED_ID_LIVING_BROKEN_BONES "LIVING_BROKEN_BONES" //Waspstation Edit - Breakable Bones - -#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT" -#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED" -#define MOVESPEED_ID_CARBON_CRAWLING "CARBON_CRAWLING" - -#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT" - -#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB" - -#define MOVESPEED_ID_TARFOOT "TARFOOT" - -#define MOVESPEED_ID_SEPIA "SEPIA" - -#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD" -#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD" -#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD" - -#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES" - -#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER" -#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER" - -#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER" - -#define MOVESPEED_ID_SANITY "MOOD_SANITY" - -#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD" -#define MOVESPEED_ID_SNAIL_CRAWL "SNAIL_CRAWL_SPEED_MOD" - -#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER" -#define MOVESPEED_ID_JETPACK "JETPACK" - -#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER" -#define MOVESPEED_ID_DIE_OF_FATE "DIE_OF_FATE" -#define MOVESPEED_ID_MOUSE_CHEESE "MOUSE_CHEESE" //Wasp Edit - Yog Mice Port - -#define MOVESPEED_ID_SHOVE "SHOVE" -#define MOVESPEED_ID_BULKY_DRAGGING "BULKY_DRAG" -#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" -#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER" -#define MOVESPEED_ID_PEPPER_SPRAY "PEPPER_SPRAYED" -#define MOVESPEED_ID_FAT "FAT" -#define MOVESPEED_ID_COLD "COLD" -#define MOVESPEED_ID_HUNGRY "HUNGRY" -#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE" -#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING" -#define MOVESPEED_ID_LENTURI "LENTURI_SLOWDOWN" - +#define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state" +#define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run" diff --git a/code/__DEFINES/power.dm b/code/__DEFINES/power.dm index 1892220dbda..0688f8e7d9d 100644 --- a/code/__DEFINES/power.dm +++ b/code/__DEFINES/power.dm @@ -1,7 +1,7 @@ -#define CABLE_LAYER_1 "l1" -#define CABLE_LAYER_2 "l2" -#define CABLE_LAYER_3 "l3" +#define CABLE_LAYER_1 1 +#define CABLE_LAYER_2 2 +#define CABLE_LAYER_3 4 -#define SOLAR_TRACK_OFF 0 -#define SOLAR_TRACK_TIMED 1 -#define SOLAR_TRACK_AUTO 2 +#define SOLAR_TRACK_OFF 0 +#define SOLAR_TRACK_TIMED 1 +#define SOLAR_TRACK_AUTO 2 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 0fd3e8d969d..4615af1259b 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -15,15 +15,14 @@ #define DISABLE_DEATHRATTLE (1<<12) #define DISABLE_ARRIVALRATTLE (1<<13) #define COMBOHUD_LIGHTING (1<<14) -//#define SOUND_RADIO (1<<15) For when you fix radio chatter noises. +#define DEADMIN_ALWAYS (1<<15) +#define DEADMIN_ANTAGONIST (1<<16) +#define DEADMIN_POSITION_HEAD (1<<17) +#define DEADMIN_POSITION_SECURITY (1<<18) +#define DEADMIN_POSITION_SILICON (1<<19) +#define SOUND_ENDOFROUND (1<<20) -#define DEADMIN_ALWAYS (1<<16) -#define DEADMIN_ANTAGONIST (1<<17) -#define DEADMIN_POSITION_HEAD (1<<18) -#define DEADMIN_POSITION_SECURITY (1<<19) -#define DEADMIN_POSITION_SILICON (1<<20) - -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_ENDOFROUND|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) //Chat toggles #define CHAT_OOC (1<<0) diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index eb151dd0475..fd24313369d 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -10,6 +10,9 @@ #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile //General assmos defines. #define WATER_VAPOR_FREEZE 200 +//freon reaction +#define FREON_BURN_RATE_DELTA 4 +#define FIRE_FREON_ENERGY_RELEASED -200000 //amount of heat absorbed per mole of burnt freon in the tile #define N2O_DECOMPOSITION_MIN_ENERGY 1400 #define N2O_DECOMPOSITION_ENERGY_RELEASED 200000 diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index d6648af5383..621375642fa 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -31,7 +31,7 @@ #define CLEAR_REAGENTS 4 // all reagents were cleared #define MIMEDRINK_SILENCE_DURATION 30 //ends up being 60 seconds given 1 tick every 2 seconds -#define TRESHOLD_UNHUSK 50 //Health treshold for instabitaluri and rezadone to unhusk someone +#define THRESHOLD_UNHUSK 50 //Health treshold for instabitaluri and rezadone to unhusk someone //used by chem masters and pill presses #define PILL_STYLE_COUNT 22 //Update this if you add more pill icons or you die diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index ea11de883de..f7a95f2f311 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -28,6 +28,7 @@ #define ROLE_OVERTHROW "Syndicate Mutineer" //Role removed, left here for safety. #define ROLE_HIVE "Hivemind Host" //Role removed, left here for safety. #define ROLE_OBSESSED "Obsessed" +#define ROLE_SPACE_DRAGON "Space Dragon" #define ROLE_SENTIENCE "Sentience Potion Spawn" #define ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime" #define ROLE_MIND_TRANSFER "Mind Transfer Potion" @@ -36,6 +37,7 @@ #define ROLE_DEATHSQUAD "Deathsquad" #define ROLE_LAVALAND "Lavaland" #define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent" +#define ROLE_FAMILIES "Familes Antagonists" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough @@ -54,12 +56,14 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_BLOB, ROLE_NINJA, ROLE_OBSESSED, + ROLE_SPACE_DRAGON, ROLE_MONKEY = /datum/game_mode/monkey, ROLE_REVENANT, ROLE_ABDUCTOR, ROLE_DEVIL = /datum/game_mode/devil, ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs, - ROLE_SENTIENCE + ROLE_SENTIENCE, + ROLE_FAMILIES = /datum/game_mode/gang )) //Job defines for what happens when you fail to qualify for any job during job selection diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index e61cb51ab77..c757af43b21 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -17,7 +17,9 @@ #define SKILL_EXP_LEGENDARY 2500 //Skill modifier types -#define SKILL_SPEED_MODIFIER "skill_speed_modifier" +#define SKILL_SPEED_MODIFIER "skill_speed_modifier"//ideally added/subtracted in speed calculations to make you do stuff faster +#define SKILL_PROBS_MODIFIER "skill_probability_modifier"//ideally added/subtracted where beneficial in prob(x) calls +#define SKILL_RANDS_MODIFIER "skill_randomness_modifier"//ideally added/subtracted where beneficial in rand(x,y) calls // Gets the reference for the skill type that was given diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 269d41365b8..76df451ed9e 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -55,6 +55,12 @@ } while (0) #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE) #define HAS_TRAIT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (source in target.status_traits[trait]) : FALSE) : FALSE) +#define HAS_TRAIT_FROM_ONLY(target, trait, source) (\ + target.status_traits ?\ + (target.status_traits[trait] ?\ + ((source in target.status_traits[trait]) && (length(target.status_traits) == 1))\ + : FALSE)\ + : FALSE) #define HAS_TRAIT_NOT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (length(target.status_traits[trait] - source) > 0) : FALSE) : FALSE) /* @@ -83,6 +89,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy. #define TRAIT_STUNIMMUNE "stun_immunity" #define TRAIT_STUNRESISTANCE "stun_resistance" +#define TRAIT_IWASBATONED "iwasbatoned" //Anti Dual-baton cooldown bypass exploit. #define TRAIT_SLEEPIMMUNE "sleep_immunity" #define TRAIT_PUSHIMMUNE "push_immunity" #define TRAIT_SHOCKIMMUNE "shock_immunity" @@ -152,16 +159,27 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_OIL_FRIED "oil_fried" #define TRAIT_MEDICAL_HUD "med_hud" #define TRAIT_SECURITY_HUD "sec_hud" +#define TRAIT_DIAGNOSTIC_HUD "diag_hud" //for something granting you a diagnostic hud #define TRAIT_MEDIBOTCOMINGTHROUGH "medbot" //Is a medbot healing you #define TRAIT_PASSTABLE "passtable" #define TRAIT_NOFLASH "noflash" //Makes you immune to flashes #define TRAIT_XENO_IMMUNE "xeno_immune"//prevents xeno huggies implanting skeletons #define TRAIT_NAIVE "naive" +#define TRAIT_PRIMITIVE "primitive" #define TRAIT_GUNFLIP "gunflip" +#define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat" +#define TRAIT_SPACEWALK "spacewalk" +#define TRAIT_GAMERGOD "gamer-god" //double arcade prizes +#define TRAIT_GIANT "giant" +#define TRAIT_DWARF "dwarf" +#define TRAIT_SILENT_FOOTSTEPS "silent_footsteps" //makes your footsteps completely silent //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it +///Used for managing KEEP_TOGETHER in [appearance_flags] +#define TRAIT_KEEP_TOGETHER "keep-together" + // item traits #define TRAIT_NODROP "nodrop" #define TRAIT_NO_STORAGE_INSERT "no_storage_insert" //cannot be inserted in a storage. @@ -192,6 +210,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FRIENDLY "friendly" #define TRAIT_GRABWEAKNESS "grab_weakness" #define TRAIT_SNOB "snob" +#define TRAIT_BALD "bald" // common trait sources #define TRAIT_GENERIC "generic" @@ -216,6 +235,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define STATUS_EFFECT_TRAIT "status-effect" #define CLOTHING_TRAIT "clothing" #define HELMET_TRAIT "helmet" +#define MASK_TRAIT "mask" //inherited from the mask +#define SHOES_TRAIT "shoes" //inherited from your sweet kicks #define GLASSES_TRAIT "glasses" #define VEHICLE_TRAIT "vehicle" // inherited from riding vehicles #define INNATE_TRAIT "innate" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 4d740a7ba20..956106c7ec1 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -124,3 +124,6 @@ // misc #define VV_HK_SPACEVINE_PURGE "spacevine_purge" + +// paintings +#define VV_HK_REMOVE_PAINTING "remove_painting" diff --git a/code/__DEFINES/~wasp_defines/_defines.dm b/code/__DEFINES/~wasp_defines/_defines.dm new file mode 100644 index 00000000000..ceb4dd21b6b --- /dev/null +++ b/code/__DEFINES/~wasp_defines/_defines.dm @@ -0,0 +1,7 @@ +//Ghosts WASPSTATION EDIT - SPAWNERS MENU +#define ui_ghost_jumptomob "SOUTH:6,CENTER-3:24" +#define ui_ghost_orbit "SOUTH:6,CENTER-2:24" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" +#define ui_ghost_teleport "SOUTH:6,CENTER:24" +#define ui_ghost_pai "SOUTH: 6,CENTER+1:24" +#define ui_ghost_spawner_menu "SOUTH:6,CENTER+2:24" diff --git a/code/__DEFINES/~wasp_defines/bone_flags.dm b/code/__DEFINES/~wasp_defines/bone_flags.dm new file mode 100644 index 00000000000..33b770f1f19 --- /dev/null +++ b/code/__DEFINES/~wasp_defines/bone_flags.dm @@ -0,0 +1,6 @@ +#define BROKEN_BONE_SLOWDOWN 2 //multiplied by the amount of broken legs, so shouldn't be more than or equal to 3 + +#define BONE_FLAG_NO_BONES 0 +#define BONE_FLAG_NORMAL 1 +#define BONE_FLAG_BROKEN 2 +#define BONE_FLAG_SPLINTED 3 diff --git a/code/__DEFINES/~wasp_defines/jobs.dm b/code/__DEFINES/~wasp_defines/jobs.dm new file mode 100644 index 00000000000..2b93c1ef18d --- /dev/null +++ b/code/__DEFINES/~wasp_defines/jobs.dm @@ -0,0 +1,4 @@ +#define LT (1<<25) + +#define JOB_DISPLAY_ORDER_LIEUTENANT 3.5 //After HoP +#define JOB_DISPLAY_ORDER_BRIG_PHYS 34.5 //After SecOfficer diff --git a/code/__DEFINES/wasp_defines/machines.dm b/code/__DEFINES/~wasp_defines/machines.dm similarity index 100% rename from code/__DEFINES/wasp_defines/machines.dm rename to code/__DEFINES/~wasp_defines/machines.dm diff --git a/code/__DEFINES/wasp_defines/metacoin.dm b/code/__DEFINES/~wasp_defines/metacoin.dm similarity index 100% rename from code/__DEFINES/wasp_defines/metacoin.dm rename to code/__DEFINES/~wasp_defines/metacoin.dm diff --git a/code/__DEFINES/~wasp_defines/movespeed_modification.dm b/code/__DEFINES/~wasp_defines/movespeed_modification.dm new file mode 100644 index 00000000000..1fb34a55997 --- /dev/null +++ b/code/__DEFINES/~wasp_defines/movespeed_modification.dm @@ -0,0 +1 @@ +#define MOVESPEED_ID_LIVING_BROKEN_BONES "LIVING_BROKEN_BONES" //Waspstation Edit - Breakable Bones diff --git a/code/__DEFINES/wasp_defines/spacepods.dm b/code/__DEFINES/~wasp_defines/spacepods.dm similarity index 100% rename from code/__DEFINES/wasp_defines/spacepods.dm rename to code/__DEFINES/~wasp_defines/spacepods.dm diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index cf16c75e9db..e90c3c15a2b 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -21,6 +21,8 @@ #define LAZYCLEARLIST(L) if(L) L.Cut() #define SANITIZE_LIST(L) ( islist(L) ? L : list() ) #define reverseList(L) reverseRange(L.Copy()) +#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += list(V); +#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; } /// Passed into BINARY_INSERT to compare keys #define COMPARE_KEY __BIN_LIST[__BIN_MID] diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index f3ff9dcf1ae..a2b16f301e3 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -53,6 +53,27 @@ for(var/I in adjacent_turfs) . |= get_area(I) +/** + * Get a bounding box of a list of atoms. + * + * Arguments: + * - atoms - List of atoms. Can accept output of view() and range() procs. + * + * Returns: list(x1, y1, x2, y2) + */ +/proc/get_bbox_of_atoms(list/atoms) + var/list/list_x = list() + var/list/list_y = list() + for(var/_a in atoms) + var/atom/a = _a + list_x += a.x + list_y += a.y + return list( + min(list_x), + min(list_y), + max(list_x), + max(list_y)) + // Like view but bypasses luminosity check /proc/get_hear(range, atom/source) @@ -276,12 +297,15 @@ else return 0 - -/proc/try_move_adjacent(atom/movable/AM) +/proc/try_move_adjacent(atom/movable/AM, trydir) var/turf/T = get_turf(AM) - for(var/direction in GLOB.cardinals) + if(trydir) + if(AM.Move(get_step(T, trydir))) + return TRUE + for(var/direction in (GLOB.cardinals-trydir)) if(AM.Move(get_step(T, direction))) - break + return TRUE + return FALSE /proc/get_mob_by_key(key) var/ckey = ckey(key) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 70a24287f3a..60c05c9897e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1274,6 +1274,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) var/ready_to_die = FALSE /mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists + SHOULD_CALL_PARENT(FALSE) return INITIALIZE_HINT_NORMAL /mob/dview/Destroy(force = FALSE) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index b07bb6fdb84..fad4eee1d47 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -33,11 +33,11 @@ //Update this whenever you need to take advantage of more recent byond features #define MIN_COMPILER_VERSION 513 -#define MIN_COMPILER_BUILD 1493 +#define MIN_COMPILER_BUILD 1508 #if DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 513.1493 or higher +#error You need version 513.1508 or higher #endif //Additional code for the above flags. diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index dce002235b1..8cd0e1827a9 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -201,5 +201,15 @@ GLOBAL_LIST_INIT(bitfields, list( "NOPOWER" = NOPOWER, "MAINT" = MAINT, "EMPED" = EMPED + ), + "vis_flags" = list( + "VIS_INHERIT_ICON" = VIS_INHERIT_ICON, + "VIS_INHERIT_ICON_STATE" = VIS_INHERIT_ICON_STATE, + "VIS_INHERIT_DIR" = VIS_INHERIT_DIR, + "VIS_INHERIT_LAYER" = VIS_INHERIT_LAYER, + "VIS_INHERIT_PLANE" = VIS_INHERIT_PLANE, + "VIS_INHERIT_ID" = VIS_INHERIT_ID, + "VIS_UNDERLAY" = VIS_UNDERLAY, + "VIS_HIDE" = VIS_HIDE ) )) diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index 0040f378a4c..e8b2bd0baeb 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -4,7 +4,7 @@ GLOBAL_DATUM(revdata, /datum/getrev) GLOBAL_VAR(host) GLOBAL_VAR(station_name) -GLOBAL_VAR_INIT(game_version, "/tg/ Station 13") +GLOBAL_VAR_INIT(game_version, "/tg/Station 13") GLOBAL_VAR_INIT(changelog_hash, "") GLOBAL_VAR_INIT(hub_visibility, FALSE) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 1ee7bf3a29c..11335266ca9 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -251,6 +251,8 @@ GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.t GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt")) +GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt")) + /proc/generate_number_strings() var/list/L[198] for(var/i in 1 to 99) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 679f16edacc..1b17febb301 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/geiger_counter = 1, /obj/item/analyzer = 1, /obj/item/mop = 1, - /obj/item/twohanded/broom = 1, + /obj/item/pushbroom = 1, /obj/item/reagent_containers/glass/bucket = 1, /obj/item/toy/crayon/spraycan = 1, ) = 1, @@ -97,6 +97,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/clothing/glasses/science = 1, /obj/item/clothing/glasses/meson = 1, /obj/item/storage/belt/fannypack = 1, + /obj/item/clothing/gloves/tackler/offbrand = 1, ) = 1, list(//construction and crafting @@ -160,9 +161,9 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/roller = 1, /obj/item/restraints/legcuffs/bola = 1, /obj/item/restraints/handcuffs/cable = 1, - /obj/item/twohanded/spear = 1, + /obj/item/spear = 1, /obj/item/shield/riot/buckler = 1, - /obj/item/grenade/iedcasing = 1, + /obj/item/grenade/iedcasing/spawned = 1, /obj/item/melee/baton/cattleprod = 1, /obj/item/throwing_star = 1, ) = 8, diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index ce5bf4beb56..fdcfc6506f4 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -36,8 +36,7 @@ GLOBAL_LIST_EMPTY(deathsquadspawn) GLOBAL_LIST_EMPTY(emergencyresponseteamspawn) GLOBAL_LIST_EMPTY(ruin_landmarks) - //away missions -GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to +//away missions GLOBAL_LIST_EMPTY(vr_spawnpoints) //used by jump-to-area etc. Updated by area/updateName() diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 0b5fa4842da..3efda260b62 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -16,12 +16,3 @@ GLOBAL_LIST_EMPTY(powernets) GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details - -// All religion stuff -GLOBAL_VAR(religion) -GLOBAL_VAR(deity) -GLOBAL_VAR(bible_name) -GLOBAL_VAR(bible_icon_state) -GLOBAL_VAR(bible_item_state) -GLOBAL_VAR(holy_weapon_type) -GLOBAL_VAR(holy_armor_type) diff --git a/code/_globalvars/religion.dm b/code/_globalvars/religion.dm new file mode 100644 index 00000000000..4eb08d43849 --- /dev/null +++ b/code/_globalvars/religion.dm @@ -0,0 +1,14 @@ +// All religion stuff +GLOBAL_VAR(religion) +GLOBAL_VAR(deity) +GLOBAL_DATUM(religious_sect, /datum/religion_sect) +GLOBAL_VAR(favor) + +//bible +GLOBAL_VAR(bible_name) +GLOBAL_VAR(bible_icon_state) +GLOBAL_VAR(bible_item_state) + +//gear +GLOBAL_VAR(holy_weapon_type) +GLOBAL_VAR(holy_armor_type) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 1fbfb67d821..587ecaf5608 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -94,11 +94,19 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED, "TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD, "TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD, + "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, "TRAIT_NOFLASH" = TRAIT_NOFLASH, "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, "TRAIT_NAIVE" = TRAIT_NAIVE, - "TRAIT_GUNFLIP" = TRAIT_GUNFLIP + "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers + "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, + "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT, + "TRAIT_SPACEWALK" = TRAIT_SPACEWALK, + "TRAIT_GAMERGOD" = TRAIT_GAMERGOD, + "TRAIT_DWARF" = TRAIT_DWARF, + "TRAIT_GIANT" = TRAIT_GIANT, + "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index bcfed9aa069..061b5a3b990 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -160,6 +160,7 @@ /// Is the atom obscured by a PREVENT_CLICK_UNDER_1 object above it /atom/proc/IsObscured() + SHOULD_BE_PURE(TRUE) if(!isturf(loc)) //This only makes sense for things directly on turfs for now return FALSE var/turf/T = get_turf_pixel(src) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index adf04c4837b..a53a304e31d 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -162,10 +162,13 @@ #define ui_pai_take_picture "SOUTH:6,WEST+12" #define ui_pai_view_images "SOUTH:6,WEST+13" -//Ghosts - DO NOT CHANGE, WASPSTATION EDIT - SPAWNERS MENU -#define ui_ghost_jumptomob "SOUTH:6,CENTER-3:24" -#define ui_ghost_orbit "SOUTH:6,CENTER-2:24" -#define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" -#define ui_ghost_teleport "SOUTH:6,CENTER:24" -#define ui_ghost_pai "SOUTH: 6,CENTER+1:24" -#define ui_ghost_spawner_menu "SOUTH:6,CENTER+2:24" +/* Ghosts - REPLACED BY WASPSTATION _defines.dm +#define ui_ghost_jumptomob "SOUTH:6,CENTER-2:24" +#define ui_ghost_orbit "SOUTH:6,CENTER-1:24" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24" +#define ui_ghost_teleport "SOUTH:6,CENTER+1:24" +#define ui_ghost_pai "SOUTH: 6, CENTER+2:24" +End Waspstation*/ + +#define ui_wanted_lvl "NORTH,11" + diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 61bc30a8352..c77880555e5 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -584,6 +584,23 @@ so as to remain in compliance with the most up-to-date laws." if(L.last_special <= world.time) return L.resist_buckle() +/obj/screen/alert/shoes/untied + name = "Untied Shoes" + desc = "Your shoes are untied! Click the alert or your shoes to tie them." + icon_state = "shoealert" + +/obj/screen/alert/shoes/knotted + name = "Knotted Shoes" + desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot." + icon_state = "shoealert" + +/obj/screen/alert/shoes/Click() + var/mob/living/carbon/C = usr + if(!istype(C) || !C.can_resist() || C != owner || !C.shoes) + return + C.changeNext_move(CLICK_CD_RESIST) + C.shoes.handle_tying(C) + // PRIVATE = only edit, use, or override these if you're editing the system as a whole // Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index c43dd4e3e24..5e792d4fddc 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -11,17 +11,14 @@ AH.toggle_leap() /obj/screen/alien/plasma_display - icon = 'icons/mob/screen_gen.dmi' - icon_state = "power_display2" name = "plasma stored" + icon_state = "power_display" screen_loc = ui_alienplasmadisplay - /obj/screen/alien/alien_queen_finder - icon = 'icons/mob/screen_alien.dmi' - icon_state = "queen_finder" name = "queen sense" desc = "Allows you to sense the general direction of your Queen." + icon_state = "queen_finder" screen_loc = ui_alien_queen_finder /datum/hud/alien diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index abcf107d202..a11b7d70b05 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -57,7 +57,10 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/obj/screen/healths var/obj/screen/healthdoll var/obj/screen/internals - + var/obj/screen/wanted_lvl + /* Wasp begin + var/obj/screen/spacesuit + Wasp End - Fuckin' spacesuits. */ // subtypes can override this to force a specific UI style var/ui_style @@ -80,6 +83,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list( plane_masters["[instance.plane]"] = instance instance.backdrop(mymob) + wanted_lvl = new /obj/screen() + wanted_lvl.icon = 'icons/obj/gang/wanted_160x32.dmi' + wanted_lvl.icon_state = "wanted_0" + wanted_lvl.screen_loc = ui_wanted_lvl + infodisplay += wanted_lvl + owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness) + /datum/hud/Destroy() if(mymob.hud_used == src) mymob.hud_used = null @@ -100,6 +110,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list( healths = null healthdoll = null + wanted_lvl = null internals = null lingchemdisplay = null devilsouldisplay = null diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index fcdc69d4c1c..8015b8b61a2 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -34,10 +34,10 @@ H.quick_equip() /obj/screen/devil + icon = 'icons/mob/screen_devil.dmi' invisibility = INVISIBILITY_ABSTRACT /obj/screen/devil/soul_counter - icon = 'icons/mob/screen_gen.dmi' name = "souls owned" icon_state = "Devil-6" screen_loc = ui_devilsouldisplay @@ -63,6 +63,7 @@ invisibility = INVISIBILITY_ABSTRACT /obj/screen/ling + icon = 'icons/mob/screen_changeling.dmi' invisibility = INVISIBILITY_ABSTRACT /obj/screen/ling/sting @@ -82,7 +83,6 @@ /datum/hud/human/New(mob/living/carbon/human/owner) ..() - owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness) var/widescreen_layout = FALSE if(owner.client?.prefs?.widescreenpref) diff --git a/code/_onclick/hud/lavaland_elite.dm b/code/_onclick/hud/lavaland_elite.dm deleted file mode 100644 index 9389d25f427..00000000000 --- a/code/_onclick/hud/lavaland_elite.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/hud/lavaland_elite - ui_style = 'icons/mob/screen_elite.dmi' - -/datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite/owner) - ..() - - pull_icon = new /obj/screen/pull() - pull_icon.icon = ui_style - pull_icon.update_icon() - pull_icon.screen_loc = ui_living_pull - pull_icon.hud = src - static_inventory += pull_icon - - healthdoll = new /obj/screen/healthdoll/lavaland_elite() - healthdoll.hud = src - infodisplay += healthdoll diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm index da2554e7676..777ebb0718b 100644 --- a/code/_onclick/hud/map_popups.dm +++ b/code/_onclick/hud/map_popups.dm @@ -1,101 +1,165 @@ /client - var/list/screen_maps //assoc list with all the active maps - when a screen obj is added to a map, it's put in here as well. "mapname" = list(screen objs in map) + /** + * Assoc list with all the active maps - when a screen obj is added to + * a map, it's put in here as well. + * + * Format: list( = list(/obj/screen)) + */ + var/list/screen_maps = list() +/** + * A screen object, which acts as a container for turfs and other things + * you want to show on the map, which you usually attach to "vis_contents". + */ /obj/screen + /** + * Map name assigned to this object. + * Automatically set by /client/proc/add_obj_to_map. + */ var/assigned_map - var/list/screen_info = list()//x,x pix, y, y pix || x,y - var/del_on_map_removal = TRUE//this could probably be changed to be a proc, for conditional removal. for now, this works. + /** + * Mark this object as garbage-collectible after you clean the map + * it was registered on. + * + * This could probably be changed to be a proc, for conditional removal. + * But for now, this works. + */ + var/del_on_map_removal = TRUE -/client/proc/clear_map(var/map_to_clear)//not really needed most of the time, as the client's screen list gets reset on relog. any of the buttons are going to get caught by garbage collection anyway. they're effectively qdel'd. - if(!map_to_clear|| !(map_to_clear in screen_maps)) - return FALSE - for(var/obj/screen/x in screen_maps[map_to_clear]) - screen_maps[map_to_clear] -= x - if(x.del_on_map_removal) - qdel(x) - screen_maps -= map_to_clear +/** + * A generic background object. + * It is also implicitly used to allocate a rectangle on the map, which will + * be used for auto-scaling the map. + */ +/obj/screen/background + name = "background" + icon = 'icons/mob/map_backgrounds.dmi' + icon_state = "clear" + layer = GAME_PLANE + plane = GAME_PLANE -/client/proc/clear_all_maps() - for(var/x in screen_maps) - clear_map(x) +/** + * Sets screen_loc of this screen object, in form of point coordinates, + * with optional pixel offset (px, py). + * + * If applicable, "assigned_map" has to be assigned before this proc call. + */ +/obj/screen/proc/set_position(x, y, px = 0, py = 0) + if(assigned_map) + screen_loc = "[assigned_map]:[x]:[px],[y]:[py]" + else + screen_loc = "[x]:[px],[y]:[py]" -/client/proc/close_popup(var/popup) - winshow(src,popup,0) - handle_popup_close(popup) +/** + * Sets screen_loc to fill a rectangular area of the map. + * + * If applicable, "assigned_map" has to be assigned before this proc call. + */ +/obj/screen/proc/fill_rect(x1, y1, x2, y2) + if(assigned_map) + screen_loc = "[assigned_map]:[x1],[y1] to [x2],[y2]" + else + screen_loc = "[x1],[y1] to [x2],[y2]" -/client/verb/handle_popup_close(window_id as text) //when the popup closes in any way (player or proc call) it calls this. - set hidden = TRUE - clear_map("[window_id]_map") +/** + * Registers screen obj with the client, which makes it visible on the + * assigned map, and becomes a part of the assigned map's lifecycle. + */ +/client/proc/register_map_obj(obj/screen/screen_obj) + if(!screen_obj.assigned_map) + CRASH("Can't register [screen_obj] without 'assigned_map' property.") + if(!screen_maps[screen_obj.assigned_map]) + screen_maps[screen_obj.assigned_map] = list() + // NOTE: Possibly an expensive operation + var/list/screen_map = screen_maps[screen_obj.assigned_map] + if(!screen_map.Find(screen_obj)) + screen_map += screen_obj + if(!screen.Find(screen_obj)) + screen += screen_obj -/client/proc/create_popup(var/name, var/ratiox = 100, var/ratioy=100) //ratio is how many pixels by how many pixels. keep it simple - winclone(src,"popupwindow",name) - var/list/winparams = new +/** + * Clears the map of registered screen objects. + * + * Not really needed most of the time, as the client's screen list gets reset + * on relog. any of the buttons are going to get caught by garbage collection + * anyway. they're effectively qdel'd. + */ +/client/proc/clear_map(map_name) + if(!map_name || !(map_name in screen_maps)) + return FALSE + for(var/obj/screen/screen_obj in screen_maps[map_name]) + screen_maps[map_name] -= screen_obj + if(screen_obj.del_on_map_removal) + qdel(screen_obj) + screen_maps -= map_name + +/** + * Clears all the maps of registered screen objects. + */ +/client/proc/clear_all_maps() + for(var/map_name in screen_maps) + clear_map(map_name) + +/** + * Creates a popup window with a basic map element in it, without any + * further initialization. + * + * Ratio is how many pixels by how many pixels (keep it simple). + * + * Returns a map name. + */ +/client/proc/create_popup(name, ratiox = 100, ratioy = 100) + winclone(src, "popupwindow", name) + var/list/winparams = list() winparams["size"] = "[ratiox]x[ratioy]" winparams["on-close"] = "handle-popup-close [name]" - winset(src,"[name]",list2params(winparams)) - winshow(src,"[name]",1) + winset(src, "[name]", list2params(winparams)) + winshow(src, "[name]", 1) - var/list/params = new + var/list/params = list() params["parent"] = "[name]" params["type"] = "map" params["size"] = "[ratiox]x[ratioy]" params["anchor1"] = "0,0" params["anchor2"] = "[ratiox],[ratioy]" winset(src, "[name]_map", list2params(params)) - if(!screen_maps) - screen_maps = list() - screen_maps["[name]_map"] = list()//initialized on the popup level, if we did it in setup_popup, we'd need to add code for the few situations where a background isn't desired. return "[name]_map" -/client/proc/setup_popup(var/popup_name,var/width = 9,var/height = 9,var/tilesize = 2,var/bgicon) //create the popup, and get it ready for generic use by giving it a background. width/height are multiplied by 64 by degfault. +/** + * Create the popup, and get it ready for generic use by giving + * it a background. + * + * Width and height are multiplied by 64 by default. + */ +/client/proc/setup_popup(popup_name, width = 9, height = 9, \ + tilesize = 2, bg_icon) if(!popup_name) return clear_map("[popup_name]_map") - var/x_value = world.icon_size*tilesize*width - var/y_value = world.icon_size*tilesize*height - var/newmap = create_popup(popup_name,x_value,y_value) - var/obj/screen/background = new - background.name = "background" - background.assigned_map = newmap - background.screen_loc = "[newmap]:1,1 TO [width],[height]" - background.icon = 'icons/mob/map_backgrounds.dmi' - if(bgicon) - background.icon_state = bgicon - else - background.icon_state = "clear" - background.layer = -1 - background.plane = -1 + var/x_value = world.icon_size * tilesize * width + var/y_value = world.icon_size * tilesize * height + var/map_name = create_popup(popup_name, x_value, y_value) - screen_maps["[popup_name]_map"] += background - screen += background + var/obj/screen/background/background = new + background.assigned_map = map_name + background.fill_rect(1, 1, width, height) + if(bg_icon) + background.icon_state = bg_icon + register_map_obj(background) - return newmap + return map_name -/client/proc/add_objs_to_map(var/list/to_add) - if(!screen_maps) - screen_maps = list() - if(!to_add.len) return - for(var/obj/screen/adding in to_add) - var/len = adding.screen_info.len - var/list/data = adding.screen_info - switch (len) - if(4) //set up for x/y offsets. - if(adding.assigned_map) - adding.screen_loc = "[adding.assigned_map]:[data[1]]:[data[2]],[data[3]],[data[4]]" - else - adding.screen_loc = "[data[1]]:[data[2]],[data[3]],[data[4]]" - if(2) //set up for simple. - if(adding.assigned_map) - adding.screen_loc = "[adding.assigned_map]:[data[1]],[data[2]]" - else - adding.screen_loc = "[data[1]],[data[2]]" - if(0) //legacy - screen_loc is already set up. don't add the map here, assumed to be old HUD code, or some custom overwrite (eg, x TO y) so it'd probably break it. +/** + * Closes a popup. + */ +/client/proc/close_popup(popup) + winshow(src, popup, 0) + handle_popup_close(popup) - else - stack_trace("[adding]'s screen_data has an invalid length. should be either 4,2,0 - it is [len]") - continue - if(!screen_maps[adding.assigned_map]) - screen_maps[adding.assigned_map] = list() - screen_maps[adding.assigned_map] += adding - screen += adding +/** + * When the popup closes in any way (player or proc call) it calls this. + */ +/client/verb/handle_popup_close(window_id as text) + set hidden = TRUE + clear_map("[window_id]_map") diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 5ad26af0fd0..f702f4cb22e 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -324,11 +324,11 @@ layer = 30 /obj/screen/parallax_layer/planet/update_status(mob/M) - var/turf/T = get_turf(M) - if(is_station_level(T.z)) - invisibility = 0 - else - invisibility = INVISIBILITY_ABSTRACT + var/client/C = M.client + var/turf/posobj = get_turf(C.eye) + if(!posobj) + return + invisibility = is_station_level(posobj.z) ? 0 : INVISIBILITY_ABSTRACT /obj/screen/parallax_layer/planet/update_o() return //Shit wont move diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm index d8a1281df82..4e1bd1fab31 100644 --- a/code/_onclick/hud/plane_master.dm +++ b/code/_onclick/hud/plane_master.dm @@ -16,9 +16,10 @@ //Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong. /obj/screen/plane_master/proc/backdrop(mob/mymob) +///Things rendered on "openspace"; holes in multi-z /obj/screen/plane_master/openspace name = "open space plane master" - plane = FLOOR_OPENSPACE_PLANE + plane = OPENSPACE_BACKDROP_PLANE appearance_flags = PLANE_MASTER blend_mode = BLEND_MULTIPLY alpha = 255 @@ -38,6 +39,7 @@ /obj/screen/plane_master/proc/clear_filters() filters = list() +///Contains just the floor /obj/screen/plane_master/floor name = "floor plane master" plane = FLOOR_PLANE @@ -49,6 +51,7 @@ if(istype(mymob) && mymob.eye_blurry) filters += GAUSSIAN_BLUR(clamp(mymob.eye_blurry*0.1,0.6,3)) +///Contains most things in the game world /obj/screen/plane_master/game_world name = "game world plane master" plane = GAME_PLANE @@ -62,12 +65,60 @@ if(istype(mymob) && mymob.eye_blurry) filters += GAUSSIAN_BLUR(clamp(mymob.eye_blurry*0.1,0.6,3)) + +///Contains all lighting objects /obj/screen/plane_master/lighting name = "lighting plane master" plane = LIGHTING_PLANE blend_mode = BLEND_MULTIPLY mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/obj/screen/plane_master/lighting/Initialize() + . = ..() + filters += filter(type="alpha", render_source=EMISSIVE_RENDER_TARGET, flags=MASK_INVERSE) + filters += filter(type="alpha", render_source=EMISSIVE_UNBLOCKABLE_RENDER_TARGET, flags=MASK_INVERSE) + +/** + * Things placed on this mask the lighting plane. Doesn't render directly. + * + * Gets masked by blocking plane. Use for things that you want blocked by + * mobs, items, etc. + */ +/obj/screen/plane_master/emissive + name = "emissive plane master" + plane = EMISSIVE_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + render_target = EMISSIVE_RENDER_TARGET + +/obj/screen/plane_master/emissive/Initialize() + . = ..() + filters += filter(type="alpha", render_source=EMISSIVE_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE) + +/** + * Things placed on this always mask the lighting plane. Doesn't render directly. + * + * Always masks the light plane, isn't blocked by anything. Use for on mob glows, + * magic stuff, etc. + */ + +/obj/screen/plane_master/emissive_unblockable + name = "unblockable emissive plane master" + plane = EMISSIVE_UNBLOCKABLE_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + render_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET + +/** + * Things placed on this layer mask the emissive layer. Doesn't render directly + * + * You really shouldn't be directly using this, use atom helpers instead + */ +/obj/screen/plane_master/emissive_blocker + name = "emissive blocker plane master" + plane = EMISSIVE_BLOCKER_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + render_target = EMISSIVE_BLOCKER_RENDER_TARGET + +///Contains space parallax /obj/screen/plane_master/parallax name = "parallax plane master" plane = PLANE_SPACE_PARALLAX diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 588af8e41a0..5afabb13504 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -285,13 +285,16 @@ GLOBAL_LIST_EMPTY(radial_menus) Choices should be a list where list keys are movables or text used for element names and return value and list values are movables/icons/images used for element icons */ -/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE) +/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE) if(!user || !anchor || !length(choices)) return if(!uniqueid) uniqueid = "defmenu_[REF(user)]_[REF(anchor)]" if(GLOB.radial_menus[uniqueid]) + if(!no_repeat_close) + var/datum/radial_menu/menu = GLOB.radial_menus[uniqueid] + menu.finished = TRUE return var/datum/radial_menu/menu = new diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index d4d727408d2..3310cc273b4 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -643,16 +643,6 @@ screen_loc = ui_living_healthdoll var/filtered = FALSE //so we don't repeatedly create the mask of the mob every update -/obj/screen/healthdoll/slime - icon = 'icons/mob/screen_slime.dmi' - icon_state = "slime_health0" - screen_loc = ui_living_healthdoll - -/obj/screen/healthdoll/lavaland_elite - icon = 'icons/mob/screen_elite.dmi' - icon_state = "elite_health0" - screen_loc = ui_living_healthdoll - /obj/screen/mood name = "mood" icon_state = "mood5" diff --git a/code/_onclick/hud/slime.dm b/code/_onclick/hud/slime.dm deleted file mode 100644 index a70f2d32ef5..00000000000 --- a/code/_onclick/hud/slime.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/hud/slime - ui_style = 'icons/mob/screen_slime.dmi' - -/datum/hud/slime/New(mob/living/simple_animal/slime/owner) - ..() - - pull_icon = new /obj/screen/pull() - pull_icon.icon = ui_style - pull_icon.update_icon() - pull_icon.screen_loc = ui_living_pull - pull_icon.hud = src - static_inventory += pull_icon - - healthdoll = new /obj/screen/healthdoll/slime() - healthdoll.hud = src - infodisplay += healthdoll diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 589de62f61f..285ec2fb94c 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -68,18 +68,9 @@ // And here are some good things for free: // Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu -/obj/machinery/gateway/centerstation/attack_ghost(mob/user) - if(awaygate) - user.forceMove(awaygate.loc) - else - to_chat(user, "[src] has no destination.") - return ..() - -/obj/machinery/gateway/centeraway/attack_ghost(mob/user) - if(stationgate) - user.forceMove(stationgate.loc) - else - to_chat(user, "[src] has no destination.") +/obj/effect/gateway_portal_bumper/attack_ghost(mob/user) + if(gateway) + gateway.Transfer(user) return ..() /obj/machinery/teleport/hub/attack_ghost(mob/user) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 9bd5dea4ca2..fca42a9403e 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -243,9 +243,19 @@ /datum/config_entry/number/movedelay/run_delay integer = FALSE +/datum/config_entry/number/movedelay/run_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run) + M.sync() + /datum/config_entry/number/movedelay/walk_delay integer = FALSE +/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk) + M.sync() + /////////////////////////////////////////////////Outdated move delay /datum/config_entry/number/outdated_movedelay deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index dd4be4a62fa..f8c5dfa225c 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -510,8 +510,11 @@ // DISCORD ROLE STUFFS // Using strings for everything because BYOND does not like numbers this big +// (exception to the above is required living hours haha) /datum/config_entry/flag/enable_discord_autorole +/datum/config_entry/number/required_living_hours + /datum/config_entry/string/discord_token /datum/config_entry/string/discord_guildid diff --git a/code/controllers/master.dm b/code/controllers/master.dm index c4c9b07520a..9d89a0d3f0a 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -455,14 +455,15 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // in those cases, so we just let them run) if (queue_node_flags & SS_NO_TICK_CHECK) if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker) - queue_node.queued_priority += queue_priority_count * 0.1 - queue_priority_count -= queue_node_priority - queue_priority_count += queue_node.queued_priority - current_tick_budget -= queue_node_priority - queue_node = queue_node.queue_next + if (!(queue_node_flags & SS_BACKGROUND)) + queue_node.queued_priority += queue_priority_count * 0.1 + queue_priority_count -= queue_node_priority + queue_priority_count += queue_node.queued_priority + current_tick_budget -= queue_node_priority + queue_node = queue_node.queue_next continue - if ((queue_node_flags & SS_BACKGROUND) && !bg_calc) + if (!bg_calc && (queue_node_flags & SS_BACKGROUND)) current_tick_budget = queue_priority_count_bg bg_calc = TRUE @@ -515,7 +516,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_node.paused_ticks = 0 queue_node.paused_tick_usage = 0 - if (queue_node_flags & SS_BACKGROUND) //update our running total + if (bg_calc) //update our running total queue_priority_count_bg -= queue_node_priority else queue_priority_count -= queue_node_priority diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 24390c59235..7e9e23bd45f 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -1,39 +1,88 @@ - +/** + * # Subsystem base class + * + * Defines a subsystem to be managed by the [Master Controller][/datum/controller/master] + * + * Simply define a child of this subsystem, using the [SUBSYSTEM_DEF] macro, and the MC will handle registration. + * Changing the name is required +**/ + /datum/controller/subsystem // Metadata; you should define these. - name = "fire coderbus" //name of the subsystem - var/init_order = INIT_ORDER_DEFAULT //order of initialization. Higher numbers are initialized first, lower numbers later. Use defines in __DEFINES/subsystems.dm for easy understanding of order. - var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer. - var/priority = FIRE_PRIORITY_DEFAULT //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep - - var/flags = 0 //see MC.dm in __DEFINES Most flags must be set on world start to take full effect. (You can also restart the mc to force them to process again) - - var/initialized = FALSE //set to TRUE after it has been initialized, will obviously never be set if the subsystem doesn't initialize - - //set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later - // use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to the list + + /// Name of the subsystem - you must change this + name = "fire coderbus" + + /// Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file. + var/init_order = INIT_ORDER_DEFAULT + + /// Time to wait (in deciseconds) between each call to fire(). Must be a positive integer. + var/wait = 20 + + /// Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems + var/priority = FIRE_PRIORITY_DEFAULT + + /// [Subsystem Flags][SS_NO_INIT] to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again) + var/flags = 0 + + /// This var is set to TRUE after the subsystem has been initialized. + var/initialized = FALSE + + /// Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later + /// use the [SS_NO_FIRE] flag instead for systems that never fire to keep it from even being added to list that is checked every tick var/can_fire = TRUE + + ///Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details. + var/runlevels = RUNLEVELS_DEFAULT //points of the game at which the SS can fire - // Bookkeeping variables; probably shouldn't mess with these. - var/last_fire = 0 //last world.time we called fire() - var/next_fire = 0 //scheduled world.time for next fire() - var/cost = 0 //average time to execute - var/tick_usage = 0 //average tick usage - var/tick_overrun = 0 //average tick overrun - var/state = SS_IDLE //tracks the current state of the ss, running, paused, etc. - var/paused_ticks = 0 //ticks this ss is taking to run right now. - var/paused_tick_usage //total tick_usage of all of our runs while pausing this run - var/ticks = 1 //how many ticks does this ss take to run on avg. - var/times_fired = 0 //number of times we have called fire() - var/queued_time = 0 //time we entered the queue, (for timing and priority reasons) - var/queued_priority //we keep a running total to make the math easier, if priority changes mid-fire that would break our running total, so we store it here - //linked list stuff for the queue + /* + * The following variables are managed by the MC and should not be modified directly. + */ + + /// Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK]) + var/last_fire = 0 + + /// Scheduled world.time for next fire() + var/next_fire = 0 + + /// Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused) + var/cost = 0 + + /// Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run + var/tick_usage = 0 + + /// Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing + var/tick_overrun = 0 + + /// Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping + var/state = SS_IDLE + + /// Tracks how many fires the subsystem has consecutively paused on in the current run + var/paused_ticks = 0 + + /// Tracks how much of a tick the subsystem has consumed in the current run + var/paused_tick_usage + + /// Tracks how many fires the subsystem takes to complete a run on average. + var/ticks = 1 + + /// Tracks the amount of completed runs for the subsystem + var/times_fired = 0 + + /// Time the subsystem entered the queue, (for timing and priority reasons) + var/queued_time = 0 + + /// Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things. + var/queued_priority + + /// How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out! + var/static/list/failure_strikes + + /// Next subsystem in the queue of subsystems to run this tick var/datum/controller/subsystem/queue_next + /// Previous subsystem in the queue of subsystems to run this tick var/datum/controller/subsystem/queue_prev - var/runlevels = RUNLEVELS_DEFAULT //points of the game at which the SS can fire - - var/static/list/failure_strikes //How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out! //Do not override ///datum/controller/subsystem/New() @@ -46,6 +95,7 @@ //This is used so the mc knows when the subsystem sleeps. do not override. /datum/controller/subsystem/proc/ignite(resumed = 0) + SHOULD_NOT_OVERRIDE(TRUE) set waitfor = 0 . = SS_SLEEPING fire(resumed) @@ -87,7 +137,7 @@ queue_node_flags = queue_node.flags if (queue_node_flags & SS_TICKER) - if (!(SS_flags & SS_TICKER)) + if ((SS_flags & (SS_TICKER|SS_BACKGROUND)) != SS_TICKER) continue if (queue_node_priority < SS_priority) break @@ -215,4 +265,3 @@ if ("queued_priority") //editing this breaks things. return 0 . = ..() - diff --git a/code/controllers/subsystem/discord.dm b/code/controllers/subsystem/discord.dm index a76edd50da5..87f8a761355 100644 --- a/code/controllers/subsystem/discord.dm +++ b/code/controllers/subsystem/discord.dm @@ -30,15 +30,22 @@ SUBSYSTEM_DEF(discord) wait = 3000 init_order = INIT_ORDER_DISCORD - var/list/notify_members = list() // People to save to notify file - var/list/notify_members_cache = list() // Copy of previous list, so the SS doesnt have to fire if no new members have been added - var/list/people_to_notify = list() // People to notify on roundstart - var/list/account_link_cache = list() // List that holds accounts to link, used in conjunction with TGS + /// People to save to notify file + var/list/notify_members = list() + /// Copy of previous list, so the SS doesnt have to fire if no new members have been added + var/list/notify_members_cache = list() + /// People to notify on roundstart + var/list/people_to_notify = list() + /// List that holds accounts to link, used in conjunction with TGS + var/list/account_link_cache = list() + /// list of people who tried to reverify, so they can only do it once per round as a shitty slowdown + var/list/reverify_cache = list() var/notify_file = file("data/notify.json") - var/enabled = 0 // Is TGS enabled (If not we wont fire because otherwise this is useless) + /// Is TGS enabled (If not we wont fire because otherwise this is useless) + var/enabled = 0 /datum/controller/subsystem/discord/Initialize(start_timeofday) - // Check for if we are using TGS, otherwise return and disabless firing + // Check for if we are using TGS, otherwise return and disables firing if(world.TgsAvailable()) enabled = 1 // Allows other procs to use this (Account linking, etc) else @@ -48,7 +55,7 @@ SUBSYSTEM_DEF(discord) try people_to_notify = json_decode(file2text(notify_file)) catch - pass() // The list can just stay as its defualt (blank). Pass() exists because it needs a catch + pass() // The list can just stay as its default (blank). Pass() exists because it needs a catch var/notifymsg = "" for(var/id in people_to_notify) // I would use jointext here, but I dont think you can two-side glue with it, and I would have to strip characters otherwise @@ -122,7 +129,6 @@ SUBSYSTEM_DEF(discord) var/url = "https://discordapp.com/api/guilds/[CONFIG_GET(string/discord_guildid)]/members/[id]/roles/[CONFIG_GET(string/discord_roleid)]" // Make the request - var/datum/http_request/req = new() req.prepare(RUSTG_HTTP_METHOD_PUT, url, "", list("Authorization" = "Bot [CONFIG_GET(string/discord_token)]")) req.begin_async() diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 271e9e5a20b..02f23c4b839 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -456,18 +456,6 @@ GLOBAL_LIST_EMPTY(the_station_areas) message_admins("Loading [away_name] failed!") return - - if(GLOB.the_gateway) - //Link any found away gate with station gate - var/obj/machinery/gateway/centeraway/new_gate - for(var/obj/machinery/gateway/centeraway/G in GLOB.machines) - if(G.z == away_level.z_value) //I'll have to refactor gateway shitcode before multi-away support. - new_gate = G - break - //Link station gate with away gate and remove wait time. - GLOB.the_gateway.awaygate = new_gate - GLOB.the_gateway.wait = world.time - /datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override) UNTIL((!z || reservation_ready["[z]"]) && !clearing_reserved_turfs) var/datum/turf_reservation/reserve = new type @@ -523,6 +511,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) //DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). /datum/controller/subsystem/mapping/proc/do_wipe_turf_reservations() + PRIVATE_PROC(TRUE) UNTIL(initialized) //This proc is for AFTER init, before init turf reservations won't even exist and using this will likely break things. for(var/i in turf_reservations) var/datum/turf_reservation/TR = i diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm index 9813df6e747..3ed9a26d1e8 100644 --- a/code/controllers/subsystem/materials.dm +++ b/code/controllers/subsystem/materials.dm @@ -12,22 +12,27 @@ SUBSYSTEM_DEF(materials) var/list/materials ///Dictionary of category || list of material refs var/list/materials_by_category + ///Dictionary of category || list of material types, mostly used by rnd machines like autolathes. + var/list/materialtypes_by_category ///List of stackcrafting recipes for materials using rigid materials var/list/rigid_stack_recipes = list( - new /datum/stack_recipe("chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), - new /datum/stack_recipe("toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), - new /datum/stack_recipe("sink", /obj/structure/sink/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), + new /datum/stack_recipe("Chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), + new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), + new /datum/stack_recipe("Sink", /obj/structure/sink/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE), + new /datum/stack_recipe("Floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE), ) ///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info) /datum/controller/subsystem/materials/proc/InitializeMaterials() materials = list() materials_by_category = list() + materialtypes_by_category = list() for(var/type in subtypesof(/datum/material)) var/datum/material/ref = new type materials[type] = ref for(var/c in ref.categories) materials_by_category[c] += list(ref) + materialtypes_by_category[c] += list(type) /datum/controller/subsystem/materials/proc/GetMaterialRef(datum/material/fakemat) if(!materials) diff --git a/code/controllers/subsystem/minor_mapping.dm b/code/controllers/subsystem/minor_mapping.dm index 8f471e40dce..08cd08780b8 100644 --- a/code/controllers/subsystem/minor_mapping.dm +++ b/code/controllers/subsystem/minor_mapping.dm @@ -29,10 +29,10 @@ SUBSYSTEM_DEF(minor_mapping) while(turfs.len && amount > 0) var/turf/T = pick_n_take(turfs) - var/obj/item/storage/backpack/satchel/flat/S = new(T) - S.hide(intact=TRUE) - amount-- + var/obj/item/storage/backpack/satchel/flat/F = new(T) + SEND_SIGNAL(F, COMSIG_OBJ_HIDE, T.intact) + amount-- /proc/find_exposed_wires() var/list/exposed_wires = list() diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 226af527400..c60b5e685c7 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -19,6 +19,7 @@ SUBSYSTEM_DEF(persistence) var/list/picture_logging_information = list() var/list/obj/structure/sign/picture_frame/photo_frames var/list/obj/item/storage/photo_album/photo_albums + var/list/obj/structure/sign/painting/painting_frames = list() var/list/paintings = list() /datum/controller/subsystem/persistence/Initialize() @@ -377,11 +378,11 @@ SUBSYSTEM_DEF(persistence) if(fexists(json_file)) paintings = json_decode(file2text(json_file)) - for(var/obj/structure/sign/painting/P in world) + for(var/obj/structure/sign/painting/P in painting_frames) P.load_persistent() /datum/controller/subsystem/persistence/proc/SavePaintings() - for(var/obj/structure/sign/painting/P in world) + for(var/obj/structure/sign/painting/P in painting_frames) P.save_persistent() var/json_file = file("data/paintings.json") diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index dbe5c6f8b4c..15d2a888689 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -171,43 +171,50 @@ SUBSYSTEM_DEF(shuttle) return S WARNING("couldn't find dock with id: [id]") -/datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason) - if(!emergency) - WARNING("requestEvac(): There is no emergency shuttle, but the \ - shuttle was called. Using the backup shuttle instead.") - if(!backup_shuttle) - CRASH("requestEvac(): There is no emergency shuttle, \ - or backup shuttle! The game will be unresolvable. This is \ - possibly a mapping error, more likely a bug with the shuttle \ - manipulation system, or badminry. It is possible to manually \ - resolve this problem by loading an emergency shuttle template \ - manually, and then calling register() on the mobile docking port. \ - Good luck.") - emergency = backup_shuttle +/datum/controller/subsystem/shuttle/proc/canEvac(mob/user) var/srd = CONFIG_GET(number/shuttle_refuel_delay) if(world.time - SSticker.round_start_time < srd && user != null) //WaspStation Edit - Autotransfer to_chat(user, "The emergency shuttle is refueling. Please wait [DisplayTimeText(srd - (world.time - SSticker.round_start_time))] before trying again.") - return + return FALSE switch(emergency.mode) if(SHUTTLE_RECALL) to_chat(user, "The emergency shuttle may not be called while returning to CentCom.") - return + return FALSE if(SHUTTLE_CALL) to_chat(user, "The emergency shuttle is already on its way.") - return + return FALSE if(SHUTTLE_DOCKED) to_chat(user, "The emergency shuttle is already here.") - return + return FALSE if(SHUTTLE_IGNITING) to_chat(user, "The emergency shuttle is firing its engines to leave.") - return + return FALSE if(SHUTTLE_ESCAPE) to_chat(user, "The emergency shuttle is moving away to a safe distance.") - return + return FALSE if(SHUTTLE_STRANDED) to_chat(user, "The emergency shuttle has been disabled by CentCom.") - return + return FALSE + + return TRUE + +/datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason) + if(!emergency) + WARNING("requestEvac(): There is no emergency shuttle, but the \ + shuttle was called. Using the backup shuttle instead.") + if(!backup_shuttle) + CRASH("requestEvac(): There is no emergency shuttle, \ + or backup shuttle! The game will be unresolvable. This is \ + possibly a mapping error, more likely a bug with the shuttle \ + manipulation system, or badminry. It is possible to manually \ + resolve this problem by loading an emergency shuttle template \ + manually, and then calling register() on the mobile docking port. \ + Good luck.") + emergency = backup_shuttle + + if(!canEvac(user)) + return call_reason = trim(html_encode(call_reason)) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 83eae0682ea..4a0b57b6a7f 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -556,6 +556,10 @@ SUBSYSTEM_DEF(ticker) news_message = "The burst of energy released near [station_name()] has been confirmed as merely a test of a new weapon. However, due to an unexpected mechanical error, their communications system has been knocked offline." if(SHUTTLE_HIJACK) news_message = "During routine evacuation procedures, the emergency shuttle of [station_name()] had its navigation protocols corrupted and went off course, but was recovered shortly after." + if(GANG_OPERATING) + news_message = "The company would like to state that any rumors of criminal organizing on board stations such as [station_name()] are falsehoods, and not to be emulated." + if(GANG_DESTROYED) + news_message = "The crew of [station_name()] would like to thank the Spinward Stellar Coalition Police Department for quickly resolving a minor terror threat to the station." if(news_message) send2otherserver(news_source, news_message,"News_Report") @@ -655,6 +659,10 @@ SUBSYSTEM_DEF(ticker) 'sound/roundend/scrunglartiy.ogg', 'sound/roundend/petersondisappointed.ogg'\ ) + ///The reference to the end of round sound that we have chosen. + var/sound/end_of_round_sound_ref = sound(round_end_sound) + for(var/mob/M in GLOB.player_list) + if(M.client.prefs?.toggles & SOUND_ENDOFROUND) + SEND_SOUND(M.client, end_of_round_sound_ref) - SEND_SOUND(world, sound(round_end_sound)) text2file(login_music, "data/last_round_lobby_music.txt") diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 4056278ac5c..9e3d2d5ea97 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -69,7 +69,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/trash/cheesie)), "greytide" = typecacheof(list(/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod, - /obj/item/twohanded/spear, /obj/item/clothing/mask/gas)), + /obj/item/spear, /obj/item/clothing/mask/gas)), "lizards" = typecacheof(list(/obj/item/toy/plush/lizardplushie, /obj/item/reagent_containers/food/snacks/kebab/tail, /obj/item/organ/tail/lizard, /obj/item/reagent_containers/food/drinks/bottle/lizardwine)), @@ -109,7 +109,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/card/id/captains_spare, /obj/item/card/id/centcom, /obj/machinery/door/airlock/command)), "the supernatural" = typecacheof(list(/obj/structure/destructible/cult, /obj/item/tome, - /obj/item/melee/cultblade, /obj/item/twohanded/required/cult_bastard, + /obj/item/melee/cultblade, /obj/item/cult_bastard, /obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, /obj/item/stack/sheet/runed_metal, /obj/machinery/door/airlock/cult, /obj/singularity/narsie, @@ -137,7 +137,7 @@ SUBSYSTEM_DEF(traumas) "anime" = typecacheof(list(/obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/chawanmushi, /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/head/kitty/genuine, /obj/item/clothing/suit/space/space_ninja, - /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, /obj/item/twohanded/vibro_weapon, + /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, /obj/item/vibro_weapon, /obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 8c0cf2c5681..8a11799891f 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -31,8 +31,7 @@ SUBSYSTEM_DEF(weather) run_weather(W, list(text2num(z))) eligible_zlevels -= z var/randTime = rand(3000, 6000) - addtimer(CALLBACK(src, .proc/make_eligible, z, possible_weather), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE) //Around 5-10 minutes between weathers - next_hit_by_zlevel["[z]"] = world.time + randTime + initial(W.telegraph_duration) + next_hit_by_zlevel["[z]"] = addtimer(CALLBACK(src, .proc/make_eligible, z, possible_weather), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE|TIMER_STOPPABLE) //Around 5-10 minutes between weathers /datum/controller/subsystem/weather/Initialize(start_timeofday) for(var/V in subtypesof(/datum/weather)) diff --git a/code/datums/components/beauty.dm b/code/datums/components/beauty.dm index 8d36cf0294b..c149cc2da03 100644 --- a/code/datums/components/beauty.dm +++ b/code/datums/components/beauty.dm @@ -2,11 +2,15 @@ var/beauty = 0 /datum/component/beauty/Initialize(beautyamount) - if(!isatom(parent)) + if(!isatom(parent) || isarea(parent)) return COMPONENT_INCOMPATIBLE + beauty = beautyamount - RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area) - RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area) + + if(ismovable(parent)) + RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area) + RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area) + var/area/A = get_area(parent) if(A) enter_area(null, A) diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index 4bff66fc7da..328d41ba073 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -47,7 +47,6 @@ var/damage = rand(min_damage, max_damage) if(HAS_TRAIT(H, TRAIT_LIGHT_STEP)) damage *= 0.75 - H.apply_damage(damage, BRUTE, picked_def_zone) if(cooldown < world.time - 10) //cooldown to avoid message spam. var/atom/A = parent @@ -59,4 +58,5 @@ "You slide on [A]!") cooldown = world.time + H.apply_damage(damage, BRUTE, picked_def_zone) H.Paralyze(60) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 85fd39a89ed..9ca29582164 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -39,11 +39,11 @@ /datum/crafting_recipe/lance name = "Explosive Lance (Grenade)" - result = /obj/item/twohanded/spear/explosive - reqs = list(/obj/item/twohanded/spear = 1, + result = /obj/item/spear/explosive + reqs = list(/obj/item/spear = 1, /obj/item/grenade = 1) - blacklist = list(/obj/item/twohanded/spear/bonespear) - parts = list(/obj/item/twohanded/spear = 1, + blacklist = list(/obj/item/spear/bonespear) + parts = list(/obj/item/spear = 1, /obj/item/grenade = 1) time = 15 category = CAT_WEAPONRY @@ -341,7 +341,7 @@ /datum/crafting_recipe/chainsaw name = "Chainsaw" - result = /obj/item/twohanded/required/chainsaw + result = /obj/item/chainsaw reqs = list(/obj/item/circular_saw = 1, /obj/item/stack/cable_coil = 3, /obj/item/stack/sheet/plasteel = 5) @@ -352,7 +352,7 @@ /datum/crafting_recipe/spear name = "Spear" - result = /obj/item/twohanded/spear + result = /obj/item/spear reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/shard = 1, /obj/item/stack/rods = 1) @@ -512,7 +512,7 @@ result = /obj/item/bombcore/chemical reqs = list( /obj/item/stock_parts/matter_bin = 1, - /obj/item/twohanded/required/gibtonite = 1, + /obj/item/gibtonite = 1, /obj/item/grenade/chem_grenade = 2 ) parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) @@ -608,7 +608,7 @@ /datum/crafting_recipe/bonespear name = "Bone Spear" - result = /obj/item/twohanded/spear/bonespear + result = /obj/item/spear/bonespear time = 30 reqs = list(/obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/sinew = 1) @@ -616,7 +616,7 @@ /datum/crafting_recipe/boneaxe name = "Bone Axe" - result = /obj/item/twohanded/fireaxe/boneaxe + result = /obj/item/fireaxe/boneaxe time = 50 reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) @@ -648,21 +648,21 @@ /datum/crafting_recipe/headpike name = "Spike Head (Glass Spear)" time = 65 - reqs = list(/obj/item/twohanded/spear = 1, + reqs = list(/obj/item/spear = 1, /obj/item/bodypart/head = 1) parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/spear = 1) - blacklist = list(/obj/item/twohanded/spear/explosive, /obj/item/twohanded/spear/bonespear) + /obj/item/spear = 1) + blacklist = list(/obj/item/spear/explosive, /obj/item/spear/bonespear) result = /obj/structure/headpike category = CAT_PRIMAL /datum/crafting_recipe/headpikebone name = "Spike Head (Bone Spear)" time = 65 - reqs = list(/obj/item/twohanded/spear/bonespear = 1, + reqs = list(/obj/item/spear/bonespear = 1, /obj/item/bodypart/head = 1) parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/spear/bonespear = 1) + /obj/item/spear/bonespear = 1) result = /obj/structure/headpike/bone category = CAT_PRIMAL @@ -679,7 +679,7 @@ /datum/crafting_recipe/rcl name = "Makeshift Rapid Pipe Cleaner Layer" - result = /obj/item/twohanded/rcl/ghetto + result = /obj/item/rcl/ghetto time = 40 tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) reqs = list(/obj/item/stack/sheet/metal = 15) @@ -804,3 +804,11 @@ /obj/item/stack/sheet/sinew = 5) result = /obj/item/key/lasso category = CAT_PRIMAL + +/datum/crafting_recipe/gripperoffbrand + name = "Improvised Gripper Gloves" + reqs = list( + /obj/item/clothing/gloves/fingerless = 1, + /obj/item/stack/sticky_tape = 1) + result = /obj/item/clothing/gloves/tackler/offbrand + category = CAT_CLOTHING diff --git a/code/datums/components/edible.dm b/code/datums/components/edible.dm index 73632511dca..234ad3ec5ec 100644 --- a/code/datums/components/edible.dm +++ b/code/datums/components/edible.dm @@ -86,13 +86,19 @@ Behavior that's still missing from this component that original food items had t ///All the checks for the act of eating itself and /datum/component/edible/proc/TryToEat(mob/living/eater, mob/living/feeder) + set waitfor = FALSE + var/atom/owner = parent if(feeder.a_intent == INTENT_HARM) return if(!owner.reagents.total_volume)//Shouldn't be needed but it checks to see if it has anything left in it. to_chat(feeder, "None of [owner] left, oh no!") - qdel(parent) + if(isturf(parent)) + var/turf/T = parent + T.ScrapeAway(1, CHANGETURF_INHERIT_AIR) + else + qdel(parent) return if(!CanConsume(eater, feeder)) return @@ -145,7 +151,7 @@ Behavior that's still missing from this component that original food items had t var/atom/owner = parent - if(!owner.reagents) + if(!owner?.reagents) return FALSE if(eater.satiety > -200) eater.satiety -= junkiness @@ -215,7 +221,11 @@ Behavior that's still missing from this component that original food items had t if(!eater) return if(!owner.reagents.total_volume) - qdel(parent) + if(isturf(parent)) + var/turf/T = parent + T.ScrapeAway(1, CHANGETURF_INHERIT_AIR) + else + qdel(parent) ///Ability to feed food to puppers /datum/component/edible/proc/UseByAnimal(datum/source, mob/user) diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index 6cdfa8352b3..0ac5b4e35e8 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -146,10 +146,10 @@ var/mob/living/carbon/human/victim = parent var/chance = jostle_chance - if(victim.m_intent == MOVE_INTENT_WALK || victim.lying) + if(victim.m_intent == MOVE_INTENT_WALK || !(victim.mobility_flags & MOBILITY_STAND)) chance *= 0.5 - if(prob(chance)) + if(harmful && prob(chance)) var/damage = weapon.w_class * jostle_pain_mult L.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage) to_chat(victim, "[weapon] embedded in your [L.name] jostles and stings!") @@ -223,7 +223,7 @@ if(victim.stat == DEAD) return - if(harmful && prob(pain_chance)) + if(harmful && prob(pain_chance)) var/damage = weapon.w_class * pain_mult L.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage) to_chat(victim, "[weapon] embedded in your [L.name] hurts!") diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index 442236ae9ff..1ab97cea544 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -42,8 +42,8 @@ return var/mob/living/LM = parent - if(!T.footstep || LM.buckled || LM.lying || !((LM.mobility_flags & (MOBILITY_STAND | MOBILITY_MOVE)) == (MOBILITY_STAND | MOBILITY_MOVE)) || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) - if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying + if(!T.footstep || LM.buckled || !((LM.mobility_flags & (MOBILITY_STAND | MOBILITY_MOVE)) == (MOBILITY_STAND | MOBILITY_MOVE)) || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) + if (!(LM.mobility_flags & MOBILITY_STAND) && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * volume) return @@ -87,6 +87,8 @@ playsound(T, pick(footstep_sounds[turf_footstep][1]), footstep_sounds[turf_footstep][2] * volume, TRUE, footstep_sounds[turf_footstep][3] + e_range) /datum/component/footstep/proc/play_humanstep() + if(HAS_TRAIT(parent, TRAIT_SILENT_FOOTSTEPS)) + return var/turf/open/T = prepare_step() if(!T) return diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 31a01809204..e454b0921c3 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -42,6 +42,7 @@ target.do_alert_animation(target) target.playsound_local(target.loc, 'sound/machines/chime.ogg', 50, TRUE) + SEND_SIGNAL(target, COMSIG_ADD_MOOD_EVENT, "gunpoint", /datum/mood_event/gunpoint) addtimer(CALLBACK(src, .proc/update_stage, 2), GUNPOINT_DELAY_STAGE_2) @@ -97,6 +98,7 @@ cancel() /datum/component/gunpoint/proc/trigger_reaction() + SEND_SIGNAL(target, COMSIG_CLEAR_MOOD_EVENT, "gunpoint") if(point_of_no_return) return point_of_no_return = TRUE @@ -124,6 +126,7 @@ shooter.visible_message("[shooter] breaks [shooter.p_their()] aim on [target]!", \ "You are no longer aiming [weapon] at [target].", target) to_chat(target, "[shooter] breaks [shooter.p_their()] aim on you!") + SEND_SIGNAL(target, COMSIG_CLEAR_MOOD_EVENT, "gunpoint") qdel(src) /datum/component/gunpoint/proc/flinch(attacker, damage, damagetype, def_zone) diff --git a/code/datums/components/hot_ice.dm b/code/datums/components/hot_ice.dm new file mode 100644 index 00000000000..0ccb935f761 --- /dev/null +++ b/code/datums/components/hot_ice.dm @@ -0,0 +1,36 @@ +/datum/component/hot_ice + var/gas_name + var/gas_amount + var/temp_amount + +/datum/component/hot_ice/Initialize(gas_name, gas_amount, temp_amount) + + src.gas_name = gas_name + src.gas_amount = gas_amount + src.temp_amount = temp_amount + + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react) + RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react) + +/datum/component/thermite/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_PARENT_ATTACKBY) + UnregisterSignal(parent, COMSIG_ATOM_FIRE_ACT) + +/datum/component/hot_ice/proc/hot_ice_melt(mob/user) + var/turf/open/T = get_turf(parent) + T.atmos_spawn_air("[gas_name]=[gas_amount];TEMP=[temp_amount]") + message_admins("Hot Ice ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Hot Ice ignited by [key_name(user)] in [AREACOORD(T)]") + if(isturf(parent)) + var/turf/K = parent + K.ScrapeAway(1, CHANGETURF_INHERIT_AIR) + else + qdel(parent) + +/datum/component/hot_ice/proc/flame_react(datum/source, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + hot_ice_melt() + +/datum/component/hot_ice/proc/attackby_react(datum/source, obj/item/thing, mob/user, params) + if(thing.get_temperature()) + hot_ice_melt(user) diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm new file mode 100644 index 00000000000..c6d0c595ebb --- /dev/null +++ b/code/datums/components/label.dm @@ -0,0 +1,87 @@ +/** + The label component. + + This component is used to manage labels applied by the hand labeler. + + Atoms can only have one instance of this component, and therefore only one label at a time. + This is to avoid having names like "Backpack (label1) (label2) (label3)". This is annoying and abnoxious to read. + + When a player clicks the atom with a hand labeler to apply a label, this component gets applied to it. + If the labeler is off, the component will be removed from it, and the label will be removed from its name. + */ +/datum/component/label + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// The name of the label the player is applying to the parent. + var/label_name + +/datum/component/label/Initialize(_label_name) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + label_name = _label_name + apply_label() + +/datum/component/label/RegisterWithParent() + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackby) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/Examine) + +/datum/component/label/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE)) + +/** + This proc will fire after the parent is hit by a hand labeler which is trying to apply another label. + Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one. +*/ +/datum/component/label/InheritComponent(datum/component/label/new_comp , i_am_original, _label_name) + remove_label() + if(new_comp) + label_name = new_comp.label_name + else + label_name = _label_name + apply_label() + +/** + This proc will trigger when any object is used to attack the parent. + + If the attacking object is not a hand labeler, it will return. + If the attacking object is a hand labeler it will restore the name of the parent to what it was before this component was added to it, and the component will be deleted. + + Arguments: + * source: The parent. + * attacker: The object that is hitting the parent. + * user: The mob who is wielding the attacking object. +*/ +/datum/component/label/proc/OnAttackby(datum/source, obj/item/attacker, mob/user) + // If the attacking object is not a hand labeler or its mode is 1 (has a label ready to apply), return. + // The hand labeler should be off (mode is 0), in order to remove a label. + var/obj/item/hand_labeler/labeler = attacker + if(!istype(labeler) || labeler.mode) + return + + remove_label() + playsound(parent, 'sound/items/poster_ripped.ogg', 20, TRUE) + to_chat(user, "You remove the label from [parent].") + qdel(src) // Remove the component from the object. + +/** + This proc will trigger when someone examines the parent. + It will attach the text found in the body of the proc to the `examine_list` and display it to the player examining the parent. + + Arguments: + * source: The parent. + * user: The mob exmaining the parent. + * examine_list: The current list of text getting passed from the parent's normal examine() proc. +*/ +/datum/component/label/proc/Examine(datum/source, mob/user, list/examine_list) + examine_list += "It has a label with some words written on it. Use a hand labeler to remove it." + +/// Applies a label to the name of the parent in the format of: "parent_name (label)" +/datum/component/label/proc/apply_label() + var/atom/owner = parent + owner.name += " ([label_name])" + +/// Removes the label from the parent's name +/datum/component/label/proc/remove_label() + var/atom/owner = parent + owner.name = replacetext(owner.name, "([label_name])", "") // Remove the label text from the parent's name, wherever it's located. + owner.name = trim(owner.name) // Shave off any white space from the beginning or end of the parent's name. diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index afdc2821a95..c3e46d289e2 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -205,27 +205,27 @@ switch(sanity) if(SANITY_INSANE to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) - master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1, movetypes=(~FLYING)) + master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/insane) sanity_level = 6 if(SANITY_CRAZY to SANITY_UNSTABLE) setInsanityEffect(MINOR_INSANITY_PEN) - master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.5, movetypes=(~FLYING)) + master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy) sanity_level = 5 if(SANITY_UNSTABLE to SANITY_DISTURBED) setInsanityEffect(0) - master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.25, movetypes=(~FLYING)) + master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed) sanity_level = 4 if(SANITY_DISTURBED to SANITY_NEUTRAL) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) sanity_level = 3 if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) sanity_level = 2 if(SANITY_GREAT+1 to INFINITY) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) sanity_level = 1 update_mood_icon() diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index 2bc2fc3c86b..3d494a6b3e7 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -3,10 +3,10 @@ var/list/datum/ductnet/ducts = list() ///shortcut to our parents' reagent holder var/datum/reagents/reagents - ///TRUE if we wanna add proper pipe outless under our parent object. this is pretty good if i may so so myself + ///TRUE if we wanna add proper pipe overlays under our parent object. this is pretty good if i may so so myself var/use_overlays = TRUE - ///We can't just cut all of the parents' overlays, so we'll track them here - var/list/image/ducterlays + ///Whether our tile is covered and we should hide our ducts + var/tile_covered = FALSE ///directions in wich we act as a supplier var/supply_connects ///direction in wich we act as a demander @@ -17,8 +17,9 @@ var/turn_connects = TRUE /datum/component/plumbing/Initialize(start=TRUE, _turn_connects=TRUE) //turn_connects for wheter or not we spin with the object to change our pipes - if(parent && !ismovable(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE + var/atom/movable/AM = parent if(!AM.reagents) return COMPONENT_INCOMPATIBLE @@ -27,12 +28,13 @@ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), .proc/disable) RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), .proc/toggle_active) + RegisterSignal(parent, list(COMSIG_OBJ_HIDE), .proc/hide) + RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), .proc/create_overlays) //called by lateinit on startup if(start) - enable() - - if(use_overlays) - create_overlays() + //timer 0 so it can finish returning initialize, after which we're added to the parent. + //Only then can we tell the duct next to us they can connect, because only then is the component really added. this was a fun one + addtimer(CALLBACK(src, .proc/enable), 0) /datum/component/plumbing/process() if(!demand_connects || !reagents) @@ -42,6 +44,7 @@ for(var/D in GLOB.cardinals) if(D & demand_connects) send_request(D) + ///Can we be added to the ductnet? /datum/component/plumbing/proc/can_add(datum/ductnet/D, dir) if(!active) @@ -52,9 +55,11 @@ return FALSE return TRUE + ///called from in process(). only calls process_request(), but can be overwritten for children with special behaviour /datum/component/plumbing/proc/send_request(dir) process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = null, dir = dir) + ///check who can give us what we want, and how many each of them will give us /datum/component/plumbing/proc/process_request(amount, reagent, dir) var/list/valid_suppliers = list() @@ -69,6 +74,7 @@ for(var/A in valid_suppliers) var/datum/component/plumbing/give = A give.transfer_to(src, amount / valid_suppliers.len, reagent, net) + ///returns TRUE when they can give the specified amount and reagent. called by process request /datum/component/plumbing/proc/can_give(amount, reagent, datum/ductnet/net) if(amount <= 0) @@ -81,6 +87,7 @@ return TRUE else if(reagents.total_volume > 0) //take whatever return TRUE + ///this is where the reagent is actually transferred and is thus the finish point of our process() /datum/component/plumbing/proc/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) if(!reagents || !target || !target.reagents) @@ -89,13 +96,12 @@ reagents.trans_id_to(target.parent, reagent, amount) else reagents.trans_to(target.parent, amount, round_robin = TRUE)//we deal with alot of precise calculations so we round_robin=TRUE. Otherwise we get floating point errors, 1 != 1 and 2.5 + 2.5 = 6 + ///We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize() -/datum/component/plumbing/proc/create_overlays() - var/atom/movable/AM = parent - for(var/image/I in ducterlays) - AM.overlays.Remove(I) - qdel(I) - ducterlays = list() +/datum/component/plumbing/proc/create_overlays(atom/movable/AM, list/overlays) + if(tile_covered || !use_overlays) + return + for(var/D in GLOB.cardinals) var/color var/direction @@ -105,6 +111,7 @@ color = "blue" //blue is nice and gives else continue + var/image/I if(turn_connects) switch(D) @@ -117,20 +124,25 @@ if(WEST) direction = "west" I = image('icons/obj/plumbing/plumbers.dmi', "[direction]-[color]", layer = AM.layer - 1) + else - I = image('icons/obj/plumbing/plumbers.dmi', color, layer = AM.layer - 1) //color is not color as in the var, it's just the name + I = image('icons/obj/plumbing/plumbers.dmi', color,layer = AM.layer - 1) //color is not color as in the var, it's just the name of the icon_state I.dir = D - AM.add_overlay(I) - ducterlays += I + overlays += I + ///we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff /datum/component/plumbing/proc/disable() if(!active) return + STOP_PROCESSING(SSfluids, src) + for(var/A in ducts) var/datum/ductnet/D = ducts[A] D.remove_plumber(src) + active = FALSE + for(var/D in GLOB.cardinals) if(D & (demand_connects | supply_connects)) for(var/obj/machinery/duct/duct in get_step(parent, D)) @@ -141,8 +153,10 @@ /datum/component/plumbing/proc/enable() if(active) return + update_dir() active = TRUE + var/atom/movable/AM = parent for(var/obj/machinery/duct/D in AM.loc) //Destroy any ducts under us. Ducts also self destruct if placed under a plumbing machine. machines disable when they get moved if(D.anchored) //that should cover everything @@ -152,8 +166,10 @@ START_PROCESSING(SSfluids, src) for(var/D in GLOB.cardinals) + if(D & (demand_connects | supply_connects)) for(var/atom/movable/A in get_step(parent, D)) + if(istype(A, /obj/machinery/duct)) var/obj/machinery/duct/duct = A duct.attempt_connect() @@ -168,17 +184,20 @@ enable() else disable() + /** We update our connects only when we settle down by taking our current and original direction to find our new connects * If someone wants it to fucking spin while connected to something go actually knock yourself out */ /datum/component/plumbing/proc/update_dir() if(!turn_connects) return + var/atom/movable/AM = parent var/new_demand_connects var/new_supply_connects var/new_dir = AM.dir var/angle = 180 - dir2angle(new_dir) + if(new_dir == SOUTH) demand_connects = initial(demand_connects) supply_connects = initial(supply_connects) @@ -190,10 +209,12 @@ new_supply_connects += turn(D, angle) demand_connects = new_demand_connects supply_connects = new_supply_connects + ///Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH /datum/component/plumbing/proc/get_original_direction(dir) var/atom/movable/AM = parent return turn(dir, dir2angle(AM.dir) - 180) + //special case in-case we want to connect directly with another machine without a duct /datum/component/plumbing/proc/direct_connect(datum/component/plumbing/P, dir) if(!P.active) @@ -204,12 +225,18 @@ net.add_plumber(src, dir) net.add_plumber(P, opposite_dir) +/datum/component/plumbing/proc/hide(atom/movable/AM, intact) + tile_covered = intact + AM.update_icon() + ///has one pipe input that only takes, example is manual output pipe /datum/component/plumbing/simple_demand demand_connects = NORTH + ///has one pipe output that only supplies. example is liquid pump and manual input pipe /datum/component/plumbing/simple_supply supply_connects = NORTH + ///input and output, like a holding tank /datum/component/plumbing/tank demand_connects = WEST diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 2bd1f1b938f..96c32112f59 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -223,14 +223,15 @@ RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) /datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE) + unequip_buckle_inhands(parent) var/mob/living/carbon/human/H = parent - H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING) + H.remove_movespeed_modifier(/datum/movespeed_modifier/human_carry) . = ..() /datum/component/riding/human/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE) . = ..() var/mob/living/carbon/human/H = parent - H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = HUMAN_CARRY_SLOWDOWN) + H.add_movespeed_modifier(/datum/movespeed_modifier/human_carry) /datum/component/riding/human/proc/on_host_unarmed_melee(atom/target) var/mob/living/carbon/human/H = parent @@ -377,3 +378,11 @@ AM.unbuckle_mob(rider) . = ..() +/obj/item/riding_offhand/on_thrown(mob/living/carbon/user, atom/target) + if(rider == user) + return //Piggyback user. + user.unbuckle_mob(rider) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You gently let go of [rider].") + return + return rider diff --git a/code/datums/components/shrink.dm b/code/datums/components/shrink.dm index 48ab864c79d..3dfd131923a 100644 --- a/code/datums/components/shrink.dm +++ b/code/datums/components/shrink.dm @@ -14,7 +14,7 @@ parent_atom.opacity = 0 if(isliving(parent_atom)) var/mob/living/L = parent_atom - L.add_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY, update=TRUE, priority=100, multiplicative_slowdown=4, movetypes=GROUND) + L.add_movespeed_modifier(/datum/movespeed_modifier/shrink_ray) if(iscarbon(L)) var/mob/living/carbon/C = L C.unequip_everything() @@ -27,7 +27,6 @@ "Everything grows bigger!") QDEL_IN(src, shrink_time) - /datum/component/shrink/Destroy() var/atom/parent_atom = parent parent_atom.transform = parent_atom.transform.Scale(2,2) @@ -35,7 +34,7 @@ parent_atom.opacity = oldopac if(isliving(parent_atom)) var/mob/living/L = parent_atom - L.remove_movespeed_modifier(MOVESPEED_ID_SHRINK_RAY) + L.remove_movespeed_modifier(/datum/movespeed_modifier/shrink_ray) if(ishuman(L)) var/mob/living/carbon/human/H = L H.physiology.damage_resistance += 100 diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 245b7556e0d..ace6116b484 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -21,5 +21,5 @@ /datum/component/slippery/proc/Slip_on_wearer(datum/source, atom/movable/AM, mob/living/crossed) - if(crossed.lying && !crossed.buckle_lying) + if(!(crossed.mobility_flags & MOBILITY_STAND) && !crossed.buckle_lying) Slip(source, AM) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm new file mode 100644 index 00000000000..9980a2fc96f --- /dev/null +++ b/code/datums/components/tackle.dm @@ -0,0 +1,496 @@ +#define MAX_TABLE_MESSES 8 // how many things can we knock off a table at once? + +/** + *#tackle.dm + * + * For when you want to throw a person at something and have fun stuff happen + * + * This component is made for carbon mobs (really, humans), and allows its parent to throw themselves and perform tackles. This is done by enabling throw mode, then clicking on your + * intended target with an empty hand. You will then launch toward your target. If you hit a carbon, you'll roll to see how hard you hit them. If you hit a solid non-mob, you'll + * roll to see how badly you just messed yourself up. If, along your journey, you hit a table, you'll slam onto it and send up to MAX_TABLE_MESSES (8) /obj/items on the table flying, + * and take a bit of extra damage and stun for each thing launched. + * + * There are 2 """skill rolls""" involved here, which are handled and explained in sack() and rollTackle() (for roll 1, carbons), and splat() (for roll 2, walls and solid objects) +*/ +/datum/component/tackler + dupe_mode = COMPONENT_DUPE_UNIQUE + + ///If we're currently tackling or are on cooldown. Actually, shit, if I use this to handle cooldowns, then getting thrown by something while on cooldown will count as a tackle..... whatever, i'll fix that next commit + var/tackling = TRUE + ///How much stamina it takes to launch a tackle + var/stamina_cost + ///Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again. + var/base_knockdown + ///Your max range for how far you can tackle. + var/range + ///How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle. + var/speed + ///A flat modifier to your roll against your target, as described in [rollTackle()][/datum/component/tackler/proc/rollTackle]. Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle. + var/skill_mod + ///Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else! + var/min_distance + ///The throwdatum we're currently dealing with, if we need it + var/datum/thrownthing/tackle + +/datum/component/tackler/Initialize(stamina_cost = 25, base_knockdown = 1 SECONDS, range = 4, speed = 1, skill_mod = 0, min_distance = min_distance) + if(!iscarbon(parent)) + return COMPONENT_INCOMPATIBLE + + src.stamina_cost = stamina_cost + src.base_knockdown = base_knockdown + src.range = range + src.speed = speed + src.skill_mod = skill_mod + src.min_distance = min_distance + + var/mob/P = parent + to_chat(P, "You are now able to launch tackles! You can do so by activating throw intent, and clicking on your target with an empty hand.") + + addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + +/datum/component/tackler/Destroy() + var/mob/P = parent + to_chat(P, "You can no longer tackle.") + ..() + +/datum/component/tackler/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOB_CLICKON, .proc/checkTackle) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/sack) + RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/registerTackle) + +/datum/component/tackler/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_MOB_CLICKON, COMSIG_MOVABLE_IMPACT, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_POST_THROW)) + +///Store the thrownthing datum for later use +/datum/component/tackler/proc/registerTackle(mob/living/carbon/user, datum/thrownthing/TT) + tackle = TT + +///See if we can tackle or not. If we can, leap! +/datum/component/tackler/proc/checkTackle(mob/living/carbon/user, atom/A, params) + if(!user.in_throw_mode || user.get_active_held_item() || user.pulling || user.buckling) + return + + if(HAS_TRAIT(user, TRAIT_HULK)) + to_chat(user, "You're too angry to remember how to tackle!") + return + + if(user.restrained()) + to_chat(user, "You need free use of your hands to tackle!") + return + + if(!(user.mobility_flags & MOBILITY_STAND)) + to_chat(user, "You must be standing to tackle!") + return + + if(tackling) + to_chat(user, "You're not ready to tackle!") + return + + if(user.has_movespeed_modifier(/datum/movespeed_modifier/shove)) // can't tackle if you just got shoved + to_chat(user, "You're too off balance to tackle!") + return + + user.face_atom(A) + + var/list/modifiers = params2list(params) + if(modifiers["alt"] || modifiers["shift"] || modifiers["ctrl"] || modifiers["middle"]) + return + + tackling = TRUE + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle) + playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1) + + if(can_see(user, A, 7)) + user.visible_message("[user] leaps at [A]!", "You leap at [A]!") + else + user.visible_message("[user] leaps!", "You leap!") + + if(get_dist(user, A) < min_distance) + A = get_ranged_target_turf(user, get_dir(user, A), min_distance) //TODO: this only works in cardinals/diagonals, make it work with in-betweens too! + + user.Knockdown(base_knockdown, TRUE, TRUE) + user.adjustStaminaLoss(stamina_cost) + user.throw_at(A, range, speed, user, FALSE) + addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + return(COMSIG_MOB_CANCEL_CLICKON) + +/** + * sack() + * + * sack() is called when you actually smack into something, assuming we're mid-tackle. First it deals with smacking into non-carbons, in two cases: + * * If it's a non-carbon mob, we don't care, get out of here and do normal thrown-into-mob stuff + * * Else, if it's something dense (walls, machinery, structures, most things other than the floor), go to splat() and get ready for some high grade shit + * + * If it's a carbon we hit, we'll call rollTackle() which rolls a die and calculates modifiers for both the tackler and target, then gives us a number. Negatives favor the target, while positives favor the tackler. + * Check [rollTackle()][/datum/component/tackler/proc/rollTackle] for a more thorough explanation on the modifiers at play. + * + * Then, we figure out what effect we want, and we get to work! Note that with standard gripper gloves and no modifiers, the range of rolls is (-3, 3). The results are as follows, based on what we rolled: + * * -inf to -5: Seriously botched tackle, tackler suffers a concussion, brute damage, and a 3 second paralyze, target suffers nothing + * * -4 to -2: weak tackle, tackler gets 3 second knockdown, target gets shove slowdown but is otherwise fine + * * -1 to 0: decent tackle, tackler gets up a bit quicker than the target + * * 1: solid tackle, tackler has more of an advantage getting up quicker + * * 2 to 4: expert tackle, tackler has sizeable advantage and lands on their feet with a free passive grab + * * 5 to inf: MONSTER tackle, tackler gets up immediately and gets a free aggressive grab, target takes sizeable stamina damage from the hit and is paralyzed for one and a half seconds and knocked down for three seconds + * + * Finally, we return a bitflag to [COMSIG_MOVABLE_IMPACT] that forces the hitpush to false so that we don't knock them away. +*/ +/datum/component/tackler/proc/sack(mob/living/carbon/user, atom/hit) + if(!tackling || !tackle) + return + + if(!iscarbon(hit)) + if(hit.density) + return splat(user, hit) + return + + var/mob/living/carbon/target = hit + var/mob/living/carbon/human/T = target + var/mob/living/carbon/human/S = user + + var/roll = rollTackle(target) + tackling = FALSE + tackle.gentle = TRUE + + switch(roll) + if(-INFINITY to -5) + user.visible_message("[user] botches [user.p_their()] tackle and slams [user.p_their()] head into [target], knocking [user.p_them()]self silly!", "You botch your tackle and slam your head into [target], knocking yourself silly!", target) + to_chat(target, "[user] botches [user.p_their()] tackle and slams [user.p_their()] head into you, knocking [user.p_them()]self silly!") + + user.Paralyze(30) + var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD) + if(hed) + hed.receive_damage(brute=20, updating_health=TRUE) + user.gain_trauma(/datum/brain_trauma/mild/concussion) + + if(-4 to -2) // glancing blow at best + user.visible_message("[user] lands a weak tackle on [target], briefly knocking [target.p_them()] off-balance!", "You land a weak tackle on [target], briefly knocking [target.p_them()] off-balance!", target) + to_chat(target, "[user] lands a weak tackle on you, briefly knocking you off-balance!") + + user.Knockdown(30) + if(ishuman(target) && !T.has_movespeed_modifier(/datum/movespeed_modifier/shove)) + T.add_movespeed_modifier(/datum/movespeed_modifier/shove) // maybe define a slightly more severe/longer slowdown for this + addtimer(CALLBACK(T, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) + + if(-1 to 0) // decent hit, both parties are about equally inconvenienced + user.visible_message("[user] lands a passable tackle on [target], sending them both tumbling!", "You land a passable tackle on [target], sending you both tumbling!", target) + to_chat(target, "[user] lands a passable tackle on you, sending you both tumbling!") + + target.adjustStaminaLoss(stamina_cost) + target.Paralyze(5) + user.Knockdown(20) + target.Knockdown(25) + + if(1 to 2) // solid hit, tackler has a slight advantage + user.visible_message("[user] lands a solid tackle on [target], knocking them both down hard!", "You land a solid tackle on [target], knocking you both down hard!", target) + to_chat(target, "[user] lands a solid tackle on you, knocking you both down hard!") + + target.adjustStaminaLoss(30) + target.Paralyze(5) + user.Knockdown(10) + target.Knockdown(20) + + if(3 to 4) // really good hit, the target is definitely worse off here. Without positive modifiers, this is as good a tackle as you can land + user.visible_message("[user] lands an expert tackle on [target], knocking [target.p_them()] down hard while landing on [user.p_their()] feet with a passive grip!", "You land an expert tackle on [target], knocking [target.p_them()] down hard while landing on your feet with a passive grip!", target) + to_chat(target, "[user] lands an expert tackle on you, knocking you down hard and maintaining a passive grab!") + + user.SetKnockdown(0) + user.forceMove(get_turf(target)) + target.adjustStaminaLoss(40) + target.Paralyze(5) + target.Knockdown(30) + if(ishuman(target) && ishuman(user)) + S.dna.species.grab(S, T) + S.setGrabState(GRAB_PASSIVE) + + if(5 to INFINITY) // absolutely BODIED + user.visible_message("[user] lands a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", "You land a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", target) + to_chat(target, "[user] lands a monster tackle on you, knocking you senseless and aggressively pinning you!") + + user.SetKnockdown(0) + user.forceMove(get_turf(target)) + target.adjustStaminaLoss(40) + target.Paralyze(5) + target.Knockdown(30) + if(ishuman(target) && ishuman(user)) + S.dna.species.grab(S, T) + S.setGrabState(GRAB_AGGRESSIVE) + + + return COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH + +/** + * rollTackle() + * + * This handles all of the modifiers for the actual carbon-on-carbon tackling, and gets its own proc because of how many there are (with plenty more in mind!) + * + * The base roll is between (-3, 3), with negative numbers favoring the target, and positive numbers favoring the tackler. The target and the tackler are both assessed for + * how easy they are to knock over, with clumsiness and dwarfiness being strong maluses for each, and gigantism giving a bonus for each. These numbers and ideas + * are absolutely subject to change. + + * In addition, after subtracting the defender's mod and adding the attacker's mod to the roll, the component's base (skill) mod is added as well. Some sources of tackles + * are better at taking people down, like the bruiser and rocket gloves, while the dolphin gloves have a malus in exchange for better mobility. +*/ +/datum/component/tackler/proc/rollTackle(mob/living/carbon/target) + var/defense_mod = 0 + var/attack_mod = 0 + + // DE-FENSE + if(target.drunkenness > 60) // drunks are easier to knock off balance + defense_mod -= 3 + else if(target.drunkenness > 30) + defense_mod -= 1 + if(HAS_TRAIT(target, TRAIT_CLUMSY)) + defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_FAT)) // chonkers are harder to knock over + defense_mod += 1 + if(HAS_TRAIT(target, TRAIT_GRABWEAKNESS)) + defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_DWARF)) + defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_GIANT)) + defense_mod += 2 + + if(ishuman(target)) + var/mob/living/carbon/human/T = target + var/suit_slot = T.get_item_by_slot(ITEM_SLOT_OCLOTHING) + + if(isnull(T.wear_suit) && isnull(T.w_uniform)) // who honestly puts all of their effort into tackling a naked guy? + defense_mod += 2 + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/space/hardsuit))) + defense_mod += 1 + if(T.is_shove_knockdown_blocked()) // riot armor and such + defense_mod += 5 + if(T.is_holding_item_of_type(/obj/item/shield)) + defense_mod += 2 + + if(islizard(T)) + if(!T.getorganslot(ORGAN_SLOT_TAIL)) // lizards without tails are off-balance + defense_mod -= 1 + else if(T.dna.species.is_wagging_tail()) // lizard tail wagging is robust and can swat away assailants! + defense_mod += 1 + + // OF-FENSE + var/mob/living/carbon/sacker = parent + + if(sacker.drunkenness > 60) // you're far too drunk to hold back! + attack_mod += 1 + else if(sacker.drunkenness > 30) // if you're only a bit drunk though, you're just sloppy + attack_mod -= 1 + if(HAS_TRAIT(sacker, TRAIT_CLUMSY)) + attack_mod -= 2 + if(HAS_TRAIT(sacker, TRAIT_DWARF)) + attack_mod -= 2 + if(HAS_TRAIT(sacker, TRAIT_GIANT)) + attack_mod += 2 + + if(ishuman(target)) + var/mob/living/carbon/human/S = sacker + + var/suit_slot = S.get_item_by_slot(ITEM_SLOT_OCLOTHING) + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/armor/riot))) // tackling in riot armor is more effective, but tiring + attack_mod += 2 + sacker.adjustStaminaLoss(20) + + var/r = rand(-3, 3) - defense_mod + attack_mod + skill_mod + return r + + +/** + * splat() + * + * This is where we handle diving into dense atoms, generally with effects ranging from bad to REALLY bad. This works as a percentile roll that is modified in two steps as detailed below. The higher + * the roll, the more severe the result. + * + * Mod 1: Speed + * * Base tackle speed is 1, which is what normal gripper gloves use. For other sources with higher speed tackles, like dolphin and ESPECIALLY rocket gloves, we obey Newton's laws and hit things harder. + * * For every unit of speed above 1, move the lower bound of the roll up by 15. Unlike Mod 2, this only serves to raise the lower bound, so it can't be directly counteracted by anything you can control. + * + * Mod 2: Misc + * -Flat modifiers, these take whatever you rolled and add/subtract to it, with the end result capped between the minimum from Mod 1 and 100. Note that since we can't roll higher than 100 to start with, + * wearing a helmet should be enough to remove any chance of permanently paralyzing yourself and dramatically lessen knocking yourself unconscious, even with rocket gloves. Will expand on maybe + * * Wearing a helmet: -6 + * * Wearing riot armor: -6 + * * Clumsy: +6 + * + * Effects: Below are the outcomes based off your roll, in order of increasing severity + * * 1-63: Knocked down for a few seconds and a bit of brute and stamina damage + * * 64-83: Knocked silly, gain some confusion as well as the above + * * 84-93: Cranial trauma, get a concussion and more confusion, plus more damage + * * 94-98: Knocked unconscious, significant chance to get a random mild brain trauma, as well as a fair amount of damage + * * 99-100: Break your spinal cord, get paralyzed, take a bunch of damage too. Very unlucky! +*/ +/datum/component/tackler/proc/splat(mob/living/carbon/user, atom/hit) + if(istype(hit, /obj/machinery/vending)) // before we do anything else- + var/obj/machinery/vending/darth_vendor = hit + darth_vendor.tilt(user, TRUE) + return + else if(istype(hit, /obj/structure/window)) + var/obj/structure/window/W = hit + splatWindow(user, W) + if(QDELETED(W)) + return COMPONENT_MOVABLE_IMPACT_NEVERMIND + return + + var/oopsie_mod = 0 + var/danger_zone = (speed - 1) * 15 // for every extra speed we have over 1, take away 15 of the safest chance + danger_zone = max(min(danger_zone, 100), 1) + + if(ishuman(user)) + var/mob/living/carbon/human/S = user + var/head_slot = S.get_item_by_slot(ITEM_SLOT_HEAD) + var/suit_slot = S.get_item_by_slot(ITEM_SLOT_OCLOTHING) + if(head_slot && (istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat))) + oopsie_mod -= 6 + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/armor/riot))) + oopsie_mod -= 6 + + if(HAS_TRAIT(user, TRAIT_CLUMSY)) + oopsie_mod += 6 //honk! + + var/oopsie = rand(danger_zone, 100) + if(oopsie >= 94 && oopsie_mod < 0) // good job avoiding getting paralyzed! gold star! + to_chat(user, "You're really glad you're wearing protection!") + oopsie += oopsie_mod + + switch(oopsie) + if(99 to INFINITY) + // can you imagine standing around minding your own business when all of the sudden some guy fucking launches himself into a wall at full speed and irreparably paralyzes himself? + user.visible_message("[user] slams face-first into [hit] at an awkward angle, severing [user.p_their()] spinal column with a sickening crack! Holy shit!", "You slam face-first into [hit] at an awkward angle, severing your spinal column with a sickening crack! Holy shit!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(30) + playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE) + playsound(user, 'sound/effects/splat.ogg', 70, TRUE) + user.emote("scream") + user.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) // oopsie indeed! + shake_camera(user, 7, 7) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 4.5) + + if(94 to 98) + user.visible_message("[user] slams face-first into [hit] with a concerning squish, immediately going limp!", "You slam face-first into [hit], and immediately lose consciousness!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(30) + user.Unconscious(100) + user.gain_trauma_type(BRAIN_TRAUMA_MILD) + user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9) + shake_camera(user, 6, 6) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 3.5) + + if(84 to 93) + user.visible_message("[user] slams head-first into [hit], suffering major cranial trauma!", "You slam head-first into [hit], and the world explodes around you!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(30) + user.confused += 15 + if(prob(80)) + user.gain_trauma(/datum/brain_trauma/mild/concussion) + user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9) + user.Knockdown(40) + shake_camera(user, 5, 5) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 2.5) + + if(64 to 83) + user.visible_message("[user] slams hard into [hit], knocking [user.p_them()] senseless!", "You slam hard into [hit], knocking yourself senseless!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(10) + user.confused += 10 + user.Knockdown(30) + shake_camera(user, 3, 4) + + if(1 to 63) + user.visible_message("[user] slams into [hit]!", "You slam into [hit]!") + user.adjustStaminaLoss(20) + user.adjustBruteLoss(10) + user.Knockdown(30) + shake_camera(user, 2, 2) + + playsound(user, 'sound/weapons/smash.ogg', 70, TRUE) + + +/datum/component/tackler/proc/resetTackle() + tackling = FALSE + QDEL_NULL(tackle) + UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) + +///A special case for splatting for handling windows +/datum/component/tackler/proc/splatWindow(mob/living/carbon/user, obj/structure/window/W) + playsound(user, "sound/effects/Glasshit.ogg", 140, TRUE) + + if(W.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows + for(var/i = 0, i < speed, i++) + var/obj/item/shard/shard = new /obj/item/shard(get_turf(user)) + shard.embedding = list(embed_chance = 100, ignore_throwspeed_threshold = TRUE, impact_pain_mult=3, pain_chance=5) + shard.AddElement(/datum/element/embed, shard.embedding) + user.hitby(shard, skipcatch = TRUE, hitpush = FALSE) + shard.embedding = list() + shard.AddElement(/datum/element/embed, shard.embedding) + W.obj_destruction() + user.adjustStaminaLoss(10 * speed) + user.Paralyze(30) + user.visible_message("[user] slams into [W] and shatters it, shredding [user.p_them()]self with glass!", "You slam into [W] and shatter it, shredding yourself with glass!") + + else + user.visible_message("[user] slams into [W] like a bug, then slowly slides off it!", "You slam into [W] like a bug, then slowly slide off it!") + user.Paralyze(10) + user.Knockdown(30) + W.take_damage(20 * speed) + user.adjustStaminaLoss(10 * speed) + user.adjustBruteLoss(5 * speed) + +/datum/component/tackler/proc/delayedSmash(obj/structure/window/W) + if(W) + W.obj_destruction() + playsound(W, "shatter", 70, TRUE) + +///Check to see if we hit a table, and if so, make a big mess! +/datum/component/tackler/proc/checkObstacle(mob/living/carbon/owner) + if(!tackling) + return + + var/turf/T = get_turf(owner) + var/obj/structure/table/kevved = locate(/obj/structure/table) in T.contents + if(!kevved) + return + + var/list/messes = list() + + // we split the mess-making into two parts (check what we're gonna send flying, intermission for dealing with the tackler, then actually send stuff flying) for the benefit of making sure the face-slam text + // comes before the list of stuff that goes flying, but can still adjust text + damage to how much of a mess it made + for(var/obj/item/I in T.contents) + if(!I.anchored) + messes += I + if(messes.len >= MAX_TABLE_MESSES) + break + + /// for telling HOW big of a mess we just made + var/HOW_big_of_a_miss_did_we_just_make = "" + if(messes.len) + if(messes.len < MAX_TABLE_MESSES / 4) + HOW_big_of_a_miss_did_we_just_make = ", making a mess" + else if(messes.len < MAX_TABLE_MESSES / 2) + HOW_big_of_a_miss_did_we_just_make = ", making a big mess" + else if(messes.len < MAX_TABLE_MESSES) + HOW_big_of_a_miss_did_we_just_make = ", making a giant mess" + else + HOW_big_of_a_miss_did_we_just_make = ", making a ginormous mess!" // an extra exclamation point!! for emphasis!!! + + owner.visible_message("[owner] trips over [kevved] and slams into it face-first[HOW_big_of_a_miss_did_we_just_make]!", "You trip over [kevved] and slam into it face-first[HOW_big_of_a_miss_did_we_just_make]!") + owner.adjustStaminaLoss(20 + messes.len * 2) + owner.adjustBruteLoss(10 + messes.len) + owner.Paralyze(5 * messes.len) // half a second of paralyze for each thing you knock around + owner.Knockdown(20 + 5 * messes.len) // 2 seconds of knockdown after the paralyze + + for(var/obj/item/I in messes) + var/dist = rand(1, 3) + var/sp = 2 + if(prob(25 * (src.speed - 1))) // if our tackle speed is higher than 1, with chance (speed - 1 * 25%), throw the thing at our tackle speed + 1 + sp = speed + 1 + I.throw_at(get_ranged_target_turf(I, pick(GLOB.alldirs), range = dist), range = dist, speed = sp) + I.visible_message("[I] goes flying[sp > 3 ? " dangerously fast" : ""]!") // standard embed speed + + playsound(owner, 'sound/weapons/smash.ogg', 70, TRUE) + tackle.finalize(hit=TRUE) + resetTackle() + +#undef MAX_TABLE_MESSES diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm new file mode 100644 index 00000000000..9cc824dd5e3 --- /dev/null +++ b/code/datums/components/twohanded.dm @@ -0,0 +1,315 @@ +/** + * Two Handed Component + * + * When applied to an item it will make it two handed + * + */ +/datum/component/two_handed + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS // Only one of the component can exist on an item + var/wielded = FALSE /// Are we holding the two handed item properly + var/force_multiplier = 0 /// The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded + var/force_wielded = 0 /// The force of the item when weilded + var/force_unwielded = 0 /// The force of the item when unweilded + var/wieldsound = FALSE /// Play sound when wielded + var/unwieldsound = FALSE /// Play sound when unwielded + var/attacksound = FALSE /// Play sound on attack when wielded + var/require_twohands = FALSE /// Does it have to be held in both hands + var/icon_wielded = FALSE /// The icon that will be used when wielded + var/obj/item/offhand/offhand_item = null /// Reference to the offhand created for the item + var/sharpened_increase = 0 /// The amount of increase recived from sharpening the item + +/** + * Two Handed component + * + * vars: + * * require_twohands (optional) Does the item need both hands to be carried + * * wieldsound (optional) The sound to play when wielded + * * unwieldsound (optional) The sound to play when unwielded + * * attacksound (optional) The sound to play when wielded and attacking + * * force_multiplier (optional) The force multiplier when wielded, do not use with force_wielded, and force_unwielded + * * force_wielded (optional) The force setting when the item is wielded, do not use with force_multiplier + * * force_unwielded (optional) The force setting when the item is unwielded, do not use with force_multiplier + * * icon_wielded (optional) The icon to be used when wielded + */ +/datum/component/two_handed/Initialize(require_twohands=FALSE, wieldsound=FALSE, unwieldsound=FALSE, attacksound=FALSE, \ + force_multiplier=0, force_wielded=0, force_unwielded=0, icon_wielded=FALSE) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + src.require_twohands = require_twohands + src.wieldsound = wieldsound + src.unwieldsound = unwieldsound + src.attacksound = attacksound + src.force_multiplier = force_multiplier + src.force_wielded = force_wielded + src.force_unwielded = force_unwielded + src.icon_wielded = icon_wielded + +// Inherit the new values passed to the component +/datum/component/two_handed/InheritComponent(datum/component/two_handed/new_comp, original, require_twohands, wieldsound, unwieldsound, \ + force_multiplier, force_wielded, force_unwielded, icon_wielded) + if(!original) + return + if(require_twohands) + src.require_twohands = require_twohands + if(wieldsound) + src.wieldsound = wieldsound + if(unwieldsound) + src.unwieldsound = unwieldsound + if(attacksound) + src.attacksound = attacksound + if(force_multiplier) + src.force_multiplier = force_multiplier + if(force_wielded) + src.force_wielded = force_wielded + if(force_unwielded) + src.force_unwielded = force_unwielded + if(icon_wielded) + src.icon_wielded = icon_wielded + +// register signals withthe parent item +/datum/component/two_handed/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/on_attack_self) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved) + RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, .proc/on_sharpen) + +// Remove all siginals registered to the parent item +/datum/component/two_handed/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, + COMSIG_ITEM_DROPPED, + COMSIG_ITEM_ATTACK_SELF, + COMSIG_ITEM_ATTACK, + COMSIG_ATOM_UPDATE_ICON, + COMSIG_MOVABLE_MOVED, + COMSIG_ITEM_SHARPEN_ACT)) + +/// Triggered on equip of the item containing the component +/datum/component/two_handed/proc/on_equip(datum/source, mob/user, slot) + if(require_twohands && slot == ITEM_SLOT_HANDS) // force equip the item + wield(user) + if(!user.is_holding(parent) && wielded && !require_twohands) + unwield(user) + +/// Triggered on drop of item containing the component +/datum/component/two_handed/proc/on_drop(datum/source, mob/user) + if(require_twohands) + unwield(user, show_message=TRUE) + if(wielded) + unwield(user) + if(source == offhand_item && !QDELETED(source)) + qdel(source) + +/// Triggered on attack self of the item containing the component +/datum/component/two_handed/proc/on_attack_self(datum/source, mob/user) + if(wielded) + unwield(user) + else if(user.is_holding(parent)) + wield(user) + +/** + * Wield the two handed item in both hands + * + * vars: + * * user The mob/living/carbon that is wielding the item + */ +/datum/component/two_handed/proc/wield(mob/living/carbon/user) + if(wielded) + return + if(ismonkey(user)) + to_chat(user, "It's too heavy for you to wield fully.") + return + if(user.get_inactive_held_item()) + if(require_twohands) + to_chat(user, "[parent] is too cumbersome to carry in one hand!") + user.dropItemToGround(parent, force=TRUE) + else + to_chat(user, "You need your other hand to be empty!") + return + if(user.get_num_arms() < 2) + if(require_twohands) + user.dropItemToGround(parent, force=TRUE) + to_chat(user, "You don't have enough intact hands.") + return + + // wield update status + if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELD, user) & COMPONENT_TWOHANDED_BLOCK_WIELD) + return // blocked wield from item + wielded = TRUE + RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, .proc/on_swap_hands) + + // update item stats and name + var/obj/item/parent_item = parent + if(force_multiplier) + parent_item.force *= force_multiplier + else if(force_wielded) + parent_item.force = force_wielded + if(sharpened_increase) + parent_item.force += sharpened_increase + parent_item.name = "[parent_item.name] (Wielded)" + parent_item.update_icon() + + if(iscyborg(user)) + to_chat(user, "You dedicate your module to [parent].") + else + to_chat(user, "You grab [parent] with both hands.") + + // Play sound if one is set + if(wieldsound) + playsound(parent_item.loc, wieldsound, 50, TRUE) + + // Let's reserve the other hand + offhand_item = new(user) + offhand_item.name = "[parent_item.name] - offhand" + offhand_item.desc = "Your second grip on [parent_item]." + offhand_item.wielded = TRUE + RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED, .proc/on_drop) + user.put_in_inactive_hand(offhand_item) + +/** + * Unwield the two handed item + * + * vars: + * * user The mob/living/carbon that is unwielding the item + * * show_message (option) show a message to chat on unwield + */ +/datum/component/two_handed/proc/unwield(mob/living/carbon/user, show_message=TRUE) + if(!wielded) + return + + // wield update status + wielded = FALSE + UnregisterSignal(user, COMSIG_MOB_SWAP_HANDS) + SEND_SIGNAL(parent, COMSIG_TWOHANDED_UNWIELD, user) + + // update item stats + var/obj/item/parent_item = parent + if(sharpened_increase) + parent_item.force -= sharpened_increase + if(force_multiplier) + parent_item.force /= force_multiplier + else if(force_unwielded) + parent_item.force = force_unwielded + + // update the items name to remove the wielded status + var/sf = findtext(parent_item.name, " (Wielded)", -10) // 10 == length(" (Wielded)") + if(sf) + parent_item.name = copytext(parent_item.name, 1, sf) + else + parent_item.name = "[initial(parent_item.name)]" + + // Update icons + parent_item.update_icon() + if(user.get_item_by_slot(ITEM_SLOT_BACK) == parent) + user.update_inv_back() + else + user.update_inv_hands() + + // if the item requires two handed drop the item on unwield + if(require_twohands) + user.dropItemToGround(parent, force=TRUE) + + // Show message if requested + if(show_message) + if(iscyborg(user)) + to_chat(user, "You free up your module.") + else if(require_twohands) + to_chat(user, "You drop [parent].") + else + to_chat(user, "You are now carrying [parent] with one hand.") + + // Play sound if set + if(unwieldsound) + playsound(parent_item.loc, unwieldsound, 50, TRUE) + + // Remove the object in the offhand + if(offhand_item) + UnregisterSignal(offhand_item, COMSIG_ITEM_DROPPED) + qdel(offhand_item) + // Clear any old refrence to an item that should be gone now + offhand_item = null + +/** + * on_attack triggers on attack with the parent item + */ +/datum/component/two_handed/proc/on_attack(obj/item/source, mob/living/target, mob/living/user) + if(wielded && attacksound) + var/obj/item/parent_item = parent + playsound(parent_item.loc, attacksound, 50, TRUE) + +/** + * on_update_icon triggers on call to update parent items icon + * + * Updates the icon using icon_wielded if set + */ +/datum/component/two_handed/proc/on_update_icon(datum/source) + if(icon_wielded && wielded) + var/obj/item/parent_item = parent + if(parent_item) + parent_item.icon_state = icon_wielded + return COMSIG_ATOM_NO_UPDATE_ICON_STATE + +/** + * on_moved Triggers on item moved + */ +/datum/component/two_handed/proc/on_moved(datum/source, mob/user, dir) + unwield(user) + +/** + * on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy + */ +/datum/component/two_handed/proc/on_swap_hands(mob/user, obj/item/held_item) + if(!held_item) + return + if(held_item == parent) + return COMPONENT_BLOCK_SWAP + +/** + * on_sharpen Triggers on usage of a sharpening stone on the item + */ +/datum/component/two_handed/proc/on_sharpen(obj/item/item, amount, max_amount) + if(!item) + return COMPONENT_BLOCK_SHARPEN_BLOCKED + if(sharpened_increase) + return COMPONENT_BLOCK_SHARPEN_ALREADY + var/wielded_val = 0 + if(force_multiplier) + var/obj/item/parent_item = parent + if(wielded) + wielded_val = parent_item.force + else + wielded_val = parent_item.force * force_multiplier + else + wielded_val = force_wielded + if(wielded_val > max_amount) + return COMPONENT_BLOCK_SHARPEN_MAXED + sharpened_increase = min(amount, (max_amount - wielded_val)) + return COMPONENT_BLOCK_SHARPEN_APPLIED + +/** + * The offhand dummy item for two handed items + * + */ +/obj/item/offhand + name = "offhand" + icon_state = "offhand" + w_class = WEIGHT_CLASS_HUGE + item_flags = ABSTRACT + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/wielded = FALSE // Off Hand tracking of wielded status + +/obj/item/offhand/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) + +/obj/item/offhand/Destroy() + wielded = FALSE + return ..() + +/obj/item/offhand/equipped(mob/user, slot) + . = ..() + if(wielded && !user.is_holding(src) && !QDELETED(src)) + qdel(src) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 23b19d08141..f9c5f7ab823 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -75,38 +75,56 @@ D.adjust_money(amount) return -/datum/datacore/proc/addMinorCrime(id = "", datum/data/crime/crime) +/** + * Adds crime to security record. + * + * Is used to add single crime to someone's security record. + * Arguments: + * * id - record id. + * * datum/data/crime/crime - premade array containing every variable, usually created by createCrimeEntry. + */ +/datum/datacore/proc/addCrime(id = "", datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) - var/list/crimes = R.fields["mi_crim"] + var/list/crimes = R.fields["crim"] crimes |= crime return -/datum/datacore/proc/removeMinorCrime(id, cDataId) +/** + * Deletes crime from security record. + * + * Is used to delete single crime to someone's security record. + * Arguments: + * * id - record id. + * * cDataId - id of already existing crime. + */ +/datum/datacore/proc/removeCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) - var/list/crimes = R.fields["mi_crim"] + var/list/crimes = R.fields["crim"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crimes -= crime return -/datum/datacore/proc/removeMajorCrime(id, cDataId) +/** + * Adds details to a crime. + * + * Is used to add or replace details to already existing crime. + * Arguments: + * * id - record id. + * * cDataId - id of already existing crime. + * * details - data you want to add. + */ +/datum/datacore/proc/addCrimeDetails(id, cDataId, details) for(var/datum/data/record/R in security) if(R.fields["id"] == id) - var/list/crimes = R.fields["ma_crim"] + var/list/crimes = R.fields["crim"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) - crimes -= crime + crime.crimeDetails = details return -/datum/datacore/proc/addMajorCrime(id = "", datum/data/crime/crime) - for(var/datum/data/record/R in security) - if(R.fields["id"] == id) - var/list/crimes = R.fields["ma_crim"] - crimes |= crime - return - /datum/datacore/proc/manifest() for(var/i in GLOB.new_player_list) var/mob/dead/new_player/N = i @@ -259,8 +277,7 @@ S.fields["name"] = H.real_name S.fields["criminal"] = "None" S.fields["citation"] = list() - S.fields["mi_crim"] = list() - S.fields["ma_crim"] = list() + S.fields["crim"] = list() S.fields["notes"] = "No notes." security += S diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index 7b5f5d98b41..106d01c8d36 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -41,6 +41,7 @@ Bonus unsafe = TRUE if(A.properties["resistance"] >= 10) power = 2.5 + set_body_temp(A.affected_mob, A) /datum/symptom/fever/Activate(datum/disease/advance/A) if(!..()) @@ -50,13 +51,26 @@ Bonus to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]") else to_chat(M, "[pick("You feel too hot.", "You feel like your blood is boiling.")]") - if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT || unsafe) - Heat(M, A) -/datum/symptom/fever/proc/Heat(mob/living/M, datum/disease/advance/A) - var/get_heat = 6 * power - if(!unsafe) - M.adjust_bodytemperature(get_heat * A.stage, 0, BODYTEMP_HEAT_DAMAGE_LIMIT - 1) - else - M.adjust_bodytemperature(get_heat * A.stage) - return 1 +/** + * set_body_temp Sets the body temp change + * + * Sets the body temp change to the mob based on the stage and resistance of the disease + * arguments: + * * mob/living/M The mob to apply changes to + * * datum/disease/advance/A The disease applying the symptom + */ +/datum/symptom/fever/proc/set_body_temp(mob/living/M, datum/disease/advance/A) + M.add_body_temperature_change("fever", (6 * power) * A.stage) + +/// Update the body temp change based on the new stage +/datum/symptom/fever/on_stage_change(datum/disease/advance/A) + . = ..() + if(.) + set_body_temp(A.affected_mob, A) + +/// remove the body temp change when removing symptom +/datum/symptom/fever/End(datum/disease/advance/A) + var/mob/living/carbon/M = A.affected_mob + if(M) + M.remove_body_temperature_change("fever") diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 208b3456205..c49a953a9d8 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -259,6 +259,8 @@ /datum/symptom/heal/coma/End(datum/disease/advance/A) if(!..()) return + if(active_coma) + uncoma() REMOVE_TRAIT(A.affected_mob, TRAIT_NOCRITDAMAGE, DISEASE_TRAIT) /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) @@ -415,12 +417,12 @@ if(prob(5)) to_chat(M, "You feel yourself absorbing plasma inside and around you...") - if(M.bodytemperature > BODYTEMP_NORMAL) - M.adjust_bodytemperature(-20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,BODYTEMP_NORMAL) + if(M.bodytemperature > M.get_body_temp_normal()) + M.adjust_bodytemperature(-20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) if(prob(5)) to_chat(M, "You feel less hot.") - else if(M.bodytemperature < (BODYTEMP_NORMAL + 1)) - M.adjust_bodytemperature(20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,0,BODYTEMP_NORMAL) + else if(M.bodytemperature < (M.get_body_temp_normal() + 1)) + M.adjust_bodytemperature(20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,0, M.get_body_temp_normal()) if(prob(5)) to_chat(M, "You feel warmer.") diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index e457e2fc6a8..6214685945c 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -40,6 +40,7 @@ Bonus unsafe = TRUE if(A.properties["stage_rate"] >= 10) power = 2.5 + set_body_temp(A.affected_mob, A) /datum/symptom/shivering/Activate(datum/disease/advance/A) if(!..()) @@ -49,13 +50,26 @@ Bonus to_chat(M, "[pick("You feel cold.", "You shiver.")]") else to_chat(M, "[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]") - if(M.bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT || unsafe) - Chill(M, A) - -/datum/symptom/shivering/proc/Chill(mob/living/M, datum/disease/advance/A) - var/get_cold = 6 * power - var/limit = BODYTEMP_COLD_DAMAGE_LIMIT + 1 - if(unsafe) - limit = 0 - M.adjust_bodytemperature(-get_cold * A.stage, limit) - return 1 + +/** + * set_body_temp Sets the body temp change + * + * Sets the body temp change to the mob based on the stage and resistance of the disease + * arguments: + * * mob/living/M The mob to apply changes to + * * datum/disease/advance/A The disease applying the symptom + */ +/datum/symptom/shivering/proc/set_body_temp(mob/living/M, datum/disease/advance/A) + M.add_body_temperature_change("shivering", -((6 * power) * A.stage)) + +/// Update the body temp change based on the new stage +/datum/symptom/shivering/on_stage_change(datum/disease/advance/A) + . = ..() + if(.) + set_body_temp(A.affected_mob, A) + +/// remove the body temp change when removing symptom +/datum/symptom/shivering/End(datum/disease/advance/A) + var/mob/living/carbon/M = A.affected_mob + if(M) + M.remove_body_temperature_change("shivering") diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index 96efd38d5bc..119ccc0c60e 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -82,5 +82,5 @@ var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK) if(istype(bag, /obj/item/storage/backpack/snail)) bag.emptyStorage() - H.doUnEquip(bag, TRUE, no_move = TRUE) + H.temporarilyRemoveItemFromInventory(bag, TRUE) qdel(bag) diff --git a/code/datums/elements/snail_crawl.dm b/code/datums/elements/snail_crawl.dm index 9352ab7beda..0e322c7c9d2 100644 --- a/code/datums/elements/snail_crawl.dm +++ b/code/datums/elements/snail_crawl.dm @@ -16,13 +16,13 @@ . = ..() UnregisterSignal(target, COMSIG_MOVABLE_MOVED) if(istype(target)) - target.remove_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL) + target.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) /datum/element/snailcrawl/proc/snail_crawl(mob/living/carbon/snail) if(snail.resting && !snail.buckled && lubricate(snail)) - snail.add_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL, update=TRUE, priority=100, multiplicative_slowdown=-7, movetypes=GROUND) + snail.add_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) else - snail.remove_movespeed_modifier(MOVESPEED_ID_SNAIL_CRAWL) + snail.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) /datum/element/snailcrawl/proc/lubricate(atom/movable/snail) var/turf/open/OT = get_turf(snail) diff --git a/code/datums/elements/squish.dm b/code/datums/elements/squish.dm index 823d391e14c..ee2c38f3315 100644 --- a/code/datums/elements/squish.dm +++ b/code/datums/elements/squish.dm @@ -1,24 +1,38 @@ #define SHORT 5/7 #define TALL 7/5 +/** + # squish.dm + * + * It's an element that squishes things. After the duration passes, it reverses the transformation it squished with, taking into account if they are a different orientation than they started (read: rotationally-fluid) + * + * Normal squishes apply vertically, as if the target is being squished from above, but you can set reverse to TRUE if you want to squish them from the sides, like if they pancake into a wall from the East or West +*/ /datum/element/squish element_flags = ELEMENT_DETACH -/datum/element/squish/Attach(datum/target, duration) +/datum/element/squish/Attach(datum/target, duration=20 SECONDS, reverse=FALSE) . = ..() if(!iscarbon(target)) return ELEMENT_INCOMPATIBLE var/mob/living/carbon/C = target - var/was_lying = (C.lying != 0) - addtimer(CALLBACK(src, .proc/Detach, C, was_lying), duration) + var/was_lying = !(C.mobility_flags & MOBILITY_STAND) + addtimer(CALLBACK(src, .proc/Detach, C, was_lying, reverse), duration) - C.transform = C.transform.Scale(TALL, SHORT) + if(reverse) + C.transform = C.transform.Scale(SHORT, TALL) + else + C.transform = C.transform.Scale(TALL, SHORT) -/datum/element/squish/Detach(mob/living/carbon/C, was_lying) +/datum/element/squish/Detach(mob/living/carbon/C, was_lying, reverse) . = ..() if(istype(C)) - var/is_lying = (C.lying != 0) + var/is_lying = !(C.mobility_flags & MOBILITY_STAND) + + if(reverse) + is_lying = !is_lying + if(was_lying == is_lying) C.transform = C.transform.Scale(SHORT, TALL) else diff --git a/code/datums/elements/tool_flash.dm b/code/datums/elements/tool_flash.dm new file mode 100644 index 00000000000..622fe51c12e --- /dev/null +++ b/code/datums/elements/tool_flash.dm @@ -0,0 +1,33 @@ +/** + * Tool flash bespoke element + * + * Flashes the user when using this tool + */ +/datum/element/tool_flash + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + /// Strength of the flash + var/flash_strength + +/datum/element/tool_flash/Attach(datum/target, flash_strength) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + src.flash_strength = flash_strength + + RegisterSignal(target, COMSIG_TOOL_IN_USE, .proc/prob_flash) + RegisterSignal(target, COMSIG_TOOL_START_USE, .proc/flash) + +/datum/element/tool_flash/Detach(datum/source, force) + . = ..() + UnregisterSignal(source, list(COMSIG_TOOL_IN_USE, COMSIG_TOOL_START_USE)) + +/datum/element/tool_flash/proc/prob_flash(datum/source, mob/living/user) + if(prob(90)) + return + flash(source, user) + +/datum/element/tool_flash/proc/flash(datum/source, mob/living/user) + if(user && get_dist(get_turf(source), get_turf(user)) <= 1) + user.flash_act(min(flash_strength,1)) diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm new file mode 100644 index 00000000000..7bdbae2aa14 --- /dev/null +++ b/code/datums/elements/undertile.dm @@ -0,0 +1,59 @@ +///Add to an object if you want to be able to be hidden under tiles +/datum/element/undertile + element_flags = ELEMENT_BESPOKE | COMPONENT_DUPE_HIGHLANDER + id_arg_index = 2 + + ///the invisiblity trait applied, like TRAIT_T_RAY_VISIBLE + var/invisibility_trait + ///level of invisibility applied when under a tile. Could be INVISIBILITY_OBSERVER if you still want it to be visible to ghosts + var/invisibility_level + ///an overlay for the tile if we wish to apply that + var/tile_overlay + ///whether we use alpha or not. TRUE uses ALPHA_UNDERTILE because otherwise we have 200 different instances of this element for different alphas + var/use_alpha + ///We will switch between anchored and unanchored. for stuff like satchels that shouldnt be pullable under tiles but are otherwise unanchored + var/use_anchor + +/datum/element/undertile/Attach(datum/target, invisibility_trait, invisibility_level = INVISIBILITY_MAXIMUM, tile_overlay, use_alpha = TRUE, use_anchor = FALSE) + . = ..() + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(target, COMSIG_OBJ_HIDE, .proc/hide) + + src.invisibility_trait = invisibility_trait + src.invisibility_level = invisibility_level + src.tile_overlay = tile_overlay + src.use_alpha = use_alpha + src.use_anchor = use_anchor + +///called when a tile has been covered or uncovered +/datum/element/undertile/proc/hide(atom/movable/source, covered) + source.invisibility = covered ? invisibility_level : 0 + + var/turf/T = get_turf(source) + + if(covered) + if(invisibility_trait) + ADD_TRAIT(source, invisibility_trait, TRAIT_GENERIC) + if(tile_overlay) + T.add_overlay(tile_overlay) + if(use_alpha) + source.alpha = ALPHA_UNDERTILE + if(use_anchor) + source.anchored = TRUE + + else + if(invisibility_trait) + REMOVE_TRAIT(source, invisibility_trait, TRAIT_GENERIC) + if(tile_overlay) + T.overlays -= tile_overlay + if(use_alpha) + source.alpha = 255 + if(use_anchor) + source.anchored = FALSE + +/datum/element/undertile/Detach(atom/movable/AM, visibility_trait, invisibility_level = INVISIBILITY_MAXIMUM) + . = ..() + + hide(AM, FALSE) diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 0d727303f47..e2b8cfeba48 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -27,7 +27,9 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_OBSESSED = new/datum/atom_hud/antag/hidden(), - ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag() + ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(), + ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden(), + ANTAG_HUD_SPACECOP = new/datum/atom_hud/antag() )) /datum/atom_hud diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index dee3c6bacd7..933eae59002 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -200,7 +200,7 @@ to_chat(A, "You put [D] into a chokehold!") D.SetSleeping(400) restraining = FALSE - if(A.grab_state < GRAB_NECK) + if(A.grab_state < GRAB_NECK && !HAS_TRAIT(A, TRAIT_PACIFISM)) A.setGrabState(GRAB_NECK) else restraining = FALSE diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index ed3c4a395b1..90e1627a249 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -168,14 +168,12 @@ to_chat(usr, "Keelhaul: Harm Grab. Kick opponents to the floor. Against prone targets, deal additional stamina damage and disarm them.") to_chat(usr, "In addition, your body has become incredibly resilient to most forms of attack. Weapons cannot readily pierce your hardened skin, and you are highly resistant to stuns and knockdowns, and can block all projectiles in Throw Mode. However, you are not invincible, and sustained damage will take it's toll. Avoid heat at all costs!") -/obj/item/twohanded/bostaff +/obj/item/staff/bostaff name = "bo staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." force = 10 w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK - force_unwielded = 10 - force_wielded = 24 throwforce = 20 throw_speed = 2 attack_verb = list("smashed", "slammed", "whacked", "thwacked") @@ -184,11 +182,29 @@ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' block_chance = 50 + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/bostaff/update_icon_state() - icon_state = "bostaff[wielded]" +/obj/item/staff/bostaff/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/staff/bostaff/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=24, icon_wielded="bostaff1") + +/// triggered on wield of two handed item +/obj/item/staff/bostaff/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/staff/bostaff/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/staff/bostaff/update_icon_state() + icon_state = "bostaff0" -/obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) +/obj/item/staff/bostaff/attack(mob/target, mob/living/user) add_fingerprint(user) if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head with [src].") @@ -234,7 +250,7 @@ else return ..() -/obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) +/obj/item/staff/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!wielded) return ..() return FALSE diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index 5e5a2eaca34..74fcea782d3 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -28,6 +28,22 @@ Simple datum which is instanced once per type and is used for every object of sa var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) ///How beautiful is this material per unit var/beauty_modifier = 0 + ///Can be used to override the sound items make, lets add some SLOSHing. + var/item_sound_override + ///Can be used to override the stepsound a turf makes. MORE SLOOOSH + var/turf_sound_override + ///what texture icon state to overlay + var/texture_layer_icon_state + ///a cached filter for the texture icon + var/cached_texture_filter + +/datum/material/New() + . = ..() + if(texture_layer_icon_state) + var/texture_icon = icon('icons/materials/composite.dmi', texture_layer_icon_state) + cached_texture_filter = filter(type="layer", icon=texture_icon, blend_mode = BLEND_INSET_OVERLAY) + + ///This proc is called when the material is added to an object. /datum/material/proc/on_applied(atom/source, amount, material_flags) @@ -36,6 +52,9 @@ Simple datum which is instanced once per type and is used for every object of sa source.add_atom_colour(color, FIXED_COLOUR_PRIORITY) if(alpha) source.alpha = alpha + if(texture_layer_icon_state) + ADD_KEEP_TOGETHER(source, MATERIAL_SOURCE(src)) + source.filters += cached_texture_filter if(material_flags & MATERIAL_ADD_PREFIX) source.name = "[name] [source.name]" @@ -46,8 +65,11 @@ Simple datum which is instanced once per type and is used for every object of sa if(istype(source, /obj)) //objs on_applied_obj(source, amount, material_flags) + if(istype(source, /turf)) //turfs + on_applied_turf(source, amount, material_flags) + ///This proc is called when the material is added to an object specifically. -/datum/material/proc/on_applied_obj(var/obj/o, amount, material_flags) +/datum/material/proc/on_applied_obj(obj/o, amount, material_flags) if(material_flags & MATERIAL_AFFECT_STATISTICS) var/new_max_integrity = CEILING(o.max_integrity * integrity_modifier, 1) o.modify_max_integrity(new_max_integrity) @@ -63,12 +85,37 @@ Simple datum which is instanced once per type and is used for every object of sa for(var/i in current_armor) temp_armor_list[i] = current_armor[i] * armor_modifiers[i] o.armor = getArmor(arglist(temp_armor_list)) + if(!isitem(o)) + return + var/obj/item/I = o + if(!item_sound_override) + return + I.hitsound = item_sound_override + I.usesound = item_sound_override + I.mob_throw_hit_sound = item_sound_override + I.equip_sound = item_sound_override + I.pickup_sound = item_sound_override + I.drop_sound = item_sound_override + +/datum/material/proc/on_applied_turf(var/turf/T, amount, material_flags) + if(isopenturf(T)) + if(!turf_sound_override) + return + var/turf/open/O = T + O.footstep = turf_sound_override + O.barefootstep = turf_sound_override + O.clawfootstep = turf_sound_override + O.heavyfootstep = turf_sound_override + return ///This proc is called when the material is removed from an object. /datum/material/proc/on_removed(atom/source, material_flags) if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example if(color) source.remove_atom_colour(FIXED_COLOUR_PRIORITY, color) + if(texture_layer_icon_state) + source.filters -= cached_texture_filter + REMOVE_KEEP_TOGETHER(source, MATERIAL_SOURCE(src)) source.alpha = initial(source.alpha) if(material_flags & MATERIAL_ADD_PREFIX) @@ -77,10 +124,16 @@ Simple datum which is instanced once per type and is used for every object of sa if(istype(source, /obj)) //objs on_removed_obj(source, material_flags) + if(istype(source, /turf)) //turfs + on_removed_turf(source, material_flags) + ///This proc is called when the material is removed from an object specifically. -/datum/material/proc/on_removed_obj(var/obj/o, amount, material_flags) +/datum/material/proc/on_removed_obj(obj/o, material_flags) if(material_flags & MATERIAL_AFFECT_STATISTICS) var/new_max_integrity = initial(o.max_integrity) o.modify_max_integrity(new_max_integrity) o.force = initial(o.force) o.throwforce = initial(o.throwforce) + +/datum/material/proc/on_removed_turf(turf/T, material_flags) + return diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index ccbcb6de65f..f62076698b2 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -176,6 +176,7 @@ Unless you know what you're doing, only use the first three numbers. They're in color = "#caccd9" strength_modifier = 0.85 sheet_type = /obj/item/stack/sheet/plastic + categories = list(MAT_CATEGORY_RIGID = TRUE) value_per_unit = 0.0125 beauty_modifier = -0.01 armor_modifiers = list("melee" = 1.5, "bullet" = 1.1, "laser" = 0.3, "energy" = 0.5, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1.1, "acid" = 1) @@ -195,6 +196,7 @@ Unless you know what you're doing, only use the first three numbers. They're in desc = "Flexible, durable, but flamable. Hard to come across in space." color = "#bb8e53" strength_modifier = 0.5 + sheet_type = /obj/item/stack/sheet/mineral/wood categories = list(MAT_CATEGORY_RIGID = TRUE) value_per_unit = 0.06 beauty_modifier = 0.1 @@ -247,3 +249,23 @@ Unless you know what you're doing, only use the first three numbers. They're in . = ..() if(istype(source, /obj/item)) qdel(source.GetComponent(/datum/component/fantasy)) + +//formed when freon react with o2, emits a lot of plasma when heated +/datum/material/hot_ice + name = "hot ice" + id = "hot ice" + desc = "A weird kind of ice, feels warm to the touch" + color = "#88cdf1" + alpha = 150 + categories = list(MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/hot_ice + value_per_unit = 0.5 + beauty_modifier = 0.5 + +/datum/material/hot_ice/on_applied(atom/source, amount, material_flags) + . = ..() + source.AddComponent(/datum/component/hot_ice, "plasma", amount*50, amount*20+300) + +/datum/material/hot_ice/on_removed(atom/source, amount, material_flags) + qdel(source.GetComponent(/datum/component/hot_ice, "plasma", amount*50, amount*20+300)) + return ..() diff --git a/code/datums/materials/meat.dm b/code/datums/materials/meat.dm new file mode 100644 index 00000000000..d8a9fb5cc01 --- /dev/null +++ b/code/datums/materials/meat.dm @@ -0,0 +1,34 @@ +///It's gross, gets the name of it's owner, and is all kinds of fucked up +/datum/material/meat + name = "meat" + id = "meat" + desc = "Meat" + color = rgb(214, 67, 67) + categories = list(MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/meat + value_per_unit = 0.05 + beauty_modifier = -0.3 + strength_modifier = 0.7 + armor_modifiers = list("melee" = 0.3, "bullet" = 0.3, "laser" = 1.2, "energy" = 1.2, "bomb" = 0.3, "bio" = 0, "rad" = 0.7, "fire" = 1, "acid" = 1) + item_sound_override = 'sound/effects/meatslap.ogg' + turf_sound_override = FOOTSTEP_MEAT + texture_layer_icon_state = "meat" + +/datum/material/meat/on_removed(atom/source, material_flags) + . = ..() + qdel(source.GetComponent(/datum/component/edible)) + +/datum/material/meat/on_applied_obj(obj/O, amount, material_flags) + . = ..() + O.obj_flags |= UNIQUE_RENAME //So you can name it after the person its made from, a depressing comprimise. + make_edible(O, amount, material_flags) + +/datum/material/meat/on_applied_turf(turf/T, amount, material_flags) + . = ..() + make_edible(T, amount, material_flags) + +/datum/material/meat/proc/make_edible(atom/source, amount, material_flags) + var/nutriment_count = 3 * (amount / MINERAL_MATERIAL_AMOUNT) + var/oil_count = 2 * (amount / MINERAL_MATERIAL_AMOUNT) + source.AddComponent(/datum/component/edible, list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/cooking_oil = oil_count), null, RAW | MEAT | GROSS, null, 30, list("Fleshy")) + diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f30ba7cfdd2..42ef89e66c8 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -55,7 +55,7 @@ var/damnation_type = 0 var/datum/mind/soulOwner //who owns the soul. Under normal circumstances, this will point to src var/hasSoul = TRUE // If false, renders the character unable to sell their soul. - var/isholy = FALSE //is this person a chaplain or admin role allowed to use bibles + var/holy_role = NONE //is this person a chaplain or admin role allowed to use bibles, Any rank besides 'NONE' allows for this. var/mob/living/enslaved_to //If this mind's master is another mob (i.e. adamantine golems) var/datum/language_holder/language_holder @@ -152,9 +152,9 @@ if(silent) return if(known_skills[S] >= old_level) - to_chat(current, "I feel like I've become more proficient at [S.name]!") + S.level_gained(src, known_skills[S], old_level) else - to_chat(current, "I feel like I've become worse at [S.name]!") + S.level_lost(src, known_skills[S], old_level) ///Gets the skill's singleton and returns the result of its get_skill_modifier /datum/mind/proc/get_skill_modifier(skill, modifier) diff --git a/code/datums/mood_events/drug_events.dm b/code/datums/mood_events/drug_events.dm index 5b30b521837..bcb9bee20f9 100644 --- a/code/datums/mood_events/drug_events.dm +++ b/code/datums/mood_events/drug_events.dm @@ -35,7 +35,7 @@ mood_change = -8 /datum/mood_event/withdrawal_severe/add_effects(drug_name) - description = "Oh god I need some [drug_name]\n" + description = "Oh god I need some of that [drug_name]\n" /datum/mood_event/withdrawal_critical mood_change = -10 @@ -65,12 +65,12 @@ timeout = 3 MINUTES /datum/mood_event/narcotic_heavy - description = "I feel like I'm wrapped in cotton!\n" + description = "I feel like I'm wrapped up in cotton!\n" mood_change = 9 timeout = 3 MINUTES /datum/mood_event/stimulant_medium - description = "I have so much energy and I feel like I could do anything.\n" + description = "I have so much energy! I feel like I could do anything!\n" mood_change = 4 timeout = 3 MINUTES diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 857fb6e45ed..59ec5b8e26b 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -100,7 +100,7 @@ mood_change = 2 /datum/mood_event/table_headsmash - description = "My fucking head, that hurt..." + description = "My fucking head, that hurts..." mood_change = -3 timeout = 3 MINUTES @@ -212,6 +212,24 @@ mood_change = -8 timeout = 3 MINUTES +/datum/mood_event/deaths_door + description = "This is it... I'm really going to die.\n" + mood_change = -20 + +/datum/mood_event/gunpoint + description = "This guy is insane! I better be careful....\n" + mood_change = -10 + +/datum/mood_event/tripped + description = "I can't believe I fell for the oldest trick in the book!\n" + mood_change = -10 + timeout = 2 MINUTES + +/datum/mood_event/untied + description = "I hate when my shoes come untied!\n" + mood_change = -5 + timeout = 1 MINUTES + //These are unused so far but I want to remember them to use them later /datum/mood_event/surgery description = "HE'S CUTTING ME OPEN!!\n" @@ -224,3 +242,6 @@ /datum/mood_event/nanite_sadness/add_effects(message) description = "+++++++[message]+++++++\n" +/datum/mood_event/bald + description ="I need something to cover my head...\n" + mood_change = -3 diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 128346d7c37..280e7004a36 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -79,7 +79,7 @@ hidden = TRUE /datum/mood_event/badass_antag - description = "I'm a fucking badass and everyone around me knows it. Just look at them; they're all fucking shaking at the mere thought of me around.\n" + description = "I'm a fucking badass and everyone around me knows it. Just look at them; they're all fucking shaking at the mere thought of having me around.\n" mood_change = 7 hidden = TRUE special_screen_obj = "badass_sun" @@ -162,7 +162,7 @@ timeout = 5 MINUTES /datum/mood_event/pet_borg - description = "I just love my robotical friends!\n" + description = "I just love my robotic friends!\n" mood_change = 3 timeout = 5 MINUTES @@ -189,3 +189,7 @@ /datum/mood_event/area/add_effects(_mood_change, _description) mood_change = _mood_change description = _description + +/datum/mood_event/confident_mane + description = "I'm feeling confident with a head full of hair.\n" + mood_change = 2 diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm index 46d7128b0a0..77d581e0214 100644 --- a/code/datums/mutations/_combined.dm +++ b/code/datums/mutations/_combined.dm @@ -36,3 +36,7 @@ /datum/generecipe/tonguechem required = "/datum/mutation/human/tongue_spike; /datum/mutation/human/stimmed" result = TONGUESPIKECHEM + +/datum/generecipe/martyrdom + required = "/datum/mutation/human/strong; /datum/mutation/human/stimmed" + result = MARTYRDOM diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 2392f7c09b6..5222de9e042 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -44,6 +44,7 @@ var/synchronizer_coeff = -1 //makes the mutation hurt the user less var/power_coeff = -1 //boosts mutation strength var/energy_coeff = -1 //lowers mutation cooldown + var/list/valid_chrom_list = list() //List of strings of valid chromosomes this mutation can accept. /datum/mutation/human/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) . = ..() @@ -53,6 +54,7 @@ timed = TRUE if(copymut && istype(copymut, /datum/mutation/human)) copy_mutation(copymut) + update_valid_chromosome_list() /datum/mutation/human/proc/on_acquiring(mob/living/carbon/human/H) if(!H || !istype(H) || H.stat == DEAD || (src in H.dna.mutations)) @@ -93,22 +95,22 @@ return /datum/mutation/human/proc/on_losing(mob/living/carbon/human/owner) - if(owner && istype(owner) && (owner.dna.mutations.Remove(src))) - if(text_lose_indication && owner.stat != DEAD) - to_chat(owner, text_lose_indication) - if(visual_indicators.len) - var/list/mut_overlay = list() - if(owner.overlays_standing[layer_used]) - mut_overlay = owner.overlays_standing[layer_used] - owner.remove_overlay(layer_used) - mut_overlay.Remove(get_visual_indicator()) - owner.overlays_standing[layer_used] = mut_overlay - owner.apply_overlay(layer_used) - if(power) - owner.RemoveSpell(power) - qdel(src) - return 0 - return 1 + if(!istype(owner) || !(owner.dna.mutations.Remove(src))) + return TRUE + . = FALSE + if(text_lose_indication && owner.stat != DEAD) + to_chat(owner, text_lose_indication) + if(visual_indicators.len) + var/list/mut_overlay = list() + if(owner.overlays_standing[layer_used]) + mut_overlay = owner.overlays_standing[layer_used] + owner.remove_overlay(layer_used) + mut_overlay.Remove(get_visual_indicator()) + owner.overlays_standing[layer_used] = mut_overlay + owner.apply_overlay(layer_used) + if(power) + owner.RemoveSpell(power) + qdel(src) /mob/living/carbon/proc/update_mutations_overlay() return @@ -148,6 +150,7 @@ energy_coeff = HM.energy_coeff mutadone_proof = HM.mutadone_proof can_chromosome = HM.can_chromosome + valid_chrom_list = HM.valid_chrom_list /datum/mutation/human/proc/remove_chromosome() stabilizer_coeff = initial(stabilizer_coeff) @@ -173,3 +176,23 @@ power.panel = "Genetic" owner.AddSpell(power) return TRUE + +// Runs through all the coefficients and uses this to determine which chromosomes the +// mutation can take. Stores these as text strings in a list. +/datum/mutation/human/proc/update_valid_chromosome_list() + valid_chrom_list.Cut() + + if(can_chromosome == CHROMOSOME_NEVER) + valid_chrom_list += "none" + return + + valid_chrom_list += "reinforcement" + + if(stabilizer_coeff != -1) + valid_chrom_list += "stabilizer" + if(synchronizer_coeff != -1) + valid_chrom_list += "synchronizer" + if(power_coeff != -1) + valid_chrom_list += "power" + if(energy_coeff != -1) + valid_chrom_list += "energetic" diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index 40af7caac07..fad4dc587ff 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -398,20 +398,20 @@ action_icon = 'icons/mob/actions/actions_genetic.dmi' action_icon_state = "lay_web" -/obj/effect/proc_holder/spell/self/lay_genetic_web/cast_check(skipcharge = 0,mob/user = usr) - . = ..() +/obj/effect/proc_holder/spell/self/lay_genetic_web/cast(list/targets, mob/user = usr) + var/failed = FALSE if(!isturf(user.loc)) to_chat(user, "You can't lay webs here!") - return FALSE + failed = TRUE var/turf/T = get_turf(user) var/obj/structure/spider/stickyweb/genetic/W = locate() in T if(W) to_chat(user, "There's already a web here!") + failed = TRUE + if(failed) + revert_cast(user) return FALSE -/obj/effect/proc_holder/spell/self/lay_genetic_web/cast(list/targets, mob/user = usr) - var/turf/T = get_turf(user) - user.visible_message("[user] begins to secrete a sticky substance.","You begin to lay a web.") if(!do_after(user, 4 SECONDS, target = T)) to_chat(user, "Your web spinning was interrupted!") diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 7781b0a3d44..69ff88eb976 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -92,6 +92,7 @@ /datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) if(..()) return + ADD_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) owner.transform = owner.transform.Scale(1, 0.8) passtable_on(owner, GENETIC_MUTATION) owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") @@ -99,6 +100,7 @@ /datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) if(..()) return + REMOVE_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) owner.transform = owner.transform.Scale(1, 1.25) passtable_off(owner, GENETIC_MUTATION) owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") @@ -137,7 +139,7 @@ if(1) owner.emote("twitch") if(2 to 3) - owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]", forced="tourette's syndrome") + owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]", forced=name) var/x_offset_old = owner.pixel_x var/y_offset_old = owner.pixel_y var/x_offset = owner.pixel_x + rand(-2,2) @@ -337,6 +339,7 @@ /datum/mutation/human/gigantism/on_acquiring(mob/living/carbon/human/owner) if(..()) return + ADD_TRAIT(owner, TRAIT_GIANT, GENETIC_MUTATION) owner.resize = 1.25 owner.update_transform() owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") @@ -344,6 +347,7 @@ /datum/mutation/human/gigantism/on_losing(mob/living/carbon/human/owner) if(..()) return + REMOVE_TRAIT(owner, TRAIT_GIANT, GENETIC_MUTATION) owner.resize = 0.8 owner.update_transform() owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") @@ -390,7 +394,96 @@ /datum/mutation/human/extrastun/proc/on_move() if(prob(99.5)) //The brawl mutation return - if(owner.buckled || owner.lying || !((owner.mobility_flags & (MOBILITY_STAND | MOBILITY_MOVE)) == (MOBILITY_STAND | MOBILITY_MOVE)) || owner.throwing || owner.movement_type & (VENTCRAWLING | FLYING | FLOATING)) + if(owner.buckled || !(owner.mobility_flags & MOBILITY_STAND) || !((owner.mobility_flags & (MOBILITY_STAND | MOBILITY_MOVE)) == (MOBILITY_STAND | MOBILITY_MOVE)) || owner.throwing || owner.movement_type & (VENTCRAWLING | FLYING | FLOATING)) return //remove the 'edge' cases to_chat(owner, "You trip over your own feet.") owner.Knockdown(30) + +/datum/mutation/human/martyrdom + name = "Internal Martyrdom" + desc = "A mutation that makes the body destruct when near death. Not damaging, but very, VERY disorienting." + locked = TRUE + quality = POSITIVE //not that cloning will be an option a lot but generally lets keep this around i guess? + text_gain_indication = "You get an intense feeling of heartburn." + text_lose_indication = "Your internal organs feel at ease." + +/datum/mutation/human/martyrdom/on_acquiring() + . = ..() + if(.) + return TRUE + RegisterSignal(owner, COMSIG_MOB_STATCHANGE, .proc/bloody_shower) + +/datum/mutation/human/martyrdom/on_losing() + . = ..() + if(.) + return TRUE + UnregisterSignal(owner, COMSIG_MOB_STATCHANGE) + +/datum/mutation/human/martyrdom/proc/bloody_shower(new_stat) + if(new_stat != UNCONSCIOUS) + return + var/list/organs = owner.getorganszone(BODY_ZONE_HEAD, 1) + + for(var/obj/item/organ/I in organs) + I.Remove(owner, TRUE) + + explosion(get_turf(owner), 0, 0, 2, 0, TRUE) + for(var/mob/living/carbon/human/H in view(2,owner)) + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) + if(eyes) + to_chat(H, "You are blinded by a shower of blood!") + else + to_chat(H, "You are knocked down by a wave of... blood?!") + H.Stun(20) + H.blur_eyes(20) + eyes?.applyOrganDamage(5) + H.confused += 3 + for(var/mob/living/silicon/S in view(2,owner)) + to_chat(S, "Your sensors are disabled by a shower of blood!") + S.Paralyze(60) + owner.gib() + +/datum/mutation/human/headless + name = "H.A.R.S." + desc = "A mutation that makes the body reject the head. Stands for Head Allergic Rejection Syndrome. Warning: Removing this mutation is very dangerous, though it will regenerate head organs." + difficulty = 12 //pretty good for traitors + quality = NEGATIVE //holy shit no eyes or tongue or ears + text_gain_indication = "Something feels off." + +/datum/mutation/human/headless/on_acquiring() + . = ..() + if(.)//cant add + return TRUE + var/obj/item/organ/brain/brain = owner.getorganslot(ORGAN_SLOT_BRAIN) + if(brain) //so this doesn't instantly kill you + brain.organ_flags &= ~ORGAN_VITAL + qdel(brain) + + var/obj/item/bodypart/head/head = owner.get_bodypart(BODY_ZONE_HEAD) + if(head) + owner.visible_message("[owner]'s head splatters with a sickening crunch!", ignored_mobs = list(owner)) + new /obj/effect/gibspawner/generic(get_turf(owner), owner) + head.dismember(BRUTE) + head.drop_organs() + qdel(head) + owner.regenerate_icons() + RegisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB, .proc/abortattachment) + +/datum/mutation/human/headless/on_losing() + . = ..() + if(.) + return TRUE + UnregisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB) + var/successful = owner.regenerate_limb(BODY_ZONE_HEAD, noheal = TRUE) //noheal needs to be TRUE to prevent weird adding and removing mutation healing + if(!successful) + stack_trace("HARS mutation head regeneration failed! (usually caused by headless syndrome having a head)") + return TRUE + owner.dna.species.regenerate_organs(owner, excluded_zones = list(BODY_ZONE_CHEST)) //only regenerate head + owner.apply_damage(damage = 50, damagetype = BRUTE, def_zone = BODY_ZONE_HEAD) //and this to DISCOURAGE organ farming, or at least not make it free. + owner.visible_message("[owner]'s head returns with a sickening crunch!", "Your head regrows with a sickening crack! Ouch.") + new /obj/effect/gibspawner/generic(get_turf(owner), owner) + + +/datum/mutation/human/headless/proc/abortattachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back + if(istype(new_limb, /obj/item/bodypart/head)) + return COMPONENT_NO_ATTACH diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 880b4d709e7..52548423a7a 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -296,9 +296,14 @@ allow_duplicates = FALSE unpickable = TRUE +/datum/map_template/ruin/space/forgottenship + id = "forgottenship" + suffix = "forgottenship.dmm" + name = "Syndicate Forgotten Ship" + description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers." + /datum/map_template/ruin/space/hellfactory id = "hellfactory" suffix = "hellfactory.dmm" name = "Heck Brewery" description = "An abandoned warehouse and brewing facility, which has been recently rediscovered. Reports claim that the security system entered an ultra-hard lockdown, but these reports are inconclusive." - diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 57ef7701e32..9f2c758710c 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -86,7 +86,7 @@ return FALSE -/datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers) +/datum/saymode/binary //everything that uses .b (silicons, drones, swarmers) key = MODE_KEY_BINARY mode = MODE_BINARY @@ -95,10 +95,6 @@ var/mob/living/simple_animal/hostile/swarmer/S = user S.swarmer_chat(message) return FALSE - if(isblobmonster(user)) - var/mob/living/simple_animal/hostile/blob/B = user - B.blob_chat(message) - return FALSE if(isdrone(user)) var/mob/living/simple_animal/drone/D = user D.drone_chat(message) diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm index 52d4f3e62ad..ca38b812c11 100644 --- a/code/datums/skills/_skill.dm +++ b/code/datums/skills/_skill.dm @@ -5,3 +5,21 @@ /datum/skill/proc/get_skill_modifier(modifier, level) return modifiers[modifier][level+1] //+1 because lists start at 1 + +/** + * level_gained: Gives skill levelup messages to the user + * + * Only fires if the xp gain isn't silent, so only really useful for messages. + * Arguments: + * * mind - The mind that you'll want to send messages + * * new_level - The newly gained level. Can check the actual level to give different messages at different levels, see defines in skills.dm + * * old_level - Similar to the above, but the level you had before levelling up. + */ +/datum/skill/proc/level_gained(var/datum/mind/mind, new_level, old_level)//just for announcements (doesn't go off if the xp gain is silent) + to_chat(mind.current, "I feel like I've become more proficient at [name]!") + +/** + * level_lost: See level_gained, same idea but fires on skill level-down + */ +/datum/skill/proc/level_lost(var/datum/mind/mind, new_level, old_level) + to_chat(mind.current, "I feel like I've become worse at [name]!") diff --git a/code/datums/skills/gaming.dm b/code/datums/skills/gaming.dm new file mode 100644 index 00000000000..5a8e098fda0 --- /dev/null +++ b/code/datums/skills/gaming.dm @@ -0,0 +1,15 @@ +/datum/skill/gaming + name = "Gaming" + desc = "My proficiency as a gamer. This helps me beat bosses with ease, powergame in Orion Trail, and makes me wanna slam some gamer fuel." + modifiers = list(SKILL_PROBS_MODIFIER = list(0, 5, 10, 15, 15, 20, 25), + SKILL_RANDS_MODIFIER = list(0, 1, 2, 3, 4, 5, 7)) + +/datum/skill/gaming/level_gained(var/datum/mind/mind, new_level, old_level) + switch(new_level) + if(SKILL_LEVEL_JOURNEYMAN)//gives slight extra perks outside roll modifiers + to_chat(mind.current, "I'm starting to pick up the meta of these arcade games. \ + If I were to minmax the optimal strat and accentuate my playstyle around well-refined tech...") + if(SKILL_LEVEL_LEGENDARY)//leads to a mysterious power... + to_chat(mind.current, "Maybe gamerfuel actually would help me play better...") + else + to_chat(mind.current, "I'm getting better at these arcade games!") diff --git a/code/datums/skills/mining.dm b/code/datums/skills/mining.dm index e5979255cae..43f8eee4607 100644 --- a/code/datums/skills/mining.dm +++ b/code/datums/skills/mining.dm @@ -1,4 +1,4 @@ /datum/skill/mining name = "Mining" desc = "A dwarf's biggest skill, after drinking." - modifiers = list(SKILL_SPEED_MODIFIER = list(1, 0.95, 0.9, 0.85, 0.75, 0.6, 0.5)) + modifiers = list(SKILL_SPEED_MODIFIER = list(1, 0.95, 0.9, 0.85, 0.75, 0.6, 0.5),SKILL_PROBS_MODIFIER=list(10, 15, 20, 25, 30, 35, 40)) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index d2b557d30e8..4e8fee150b5 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -385,16 +385,7 @@ if(deathTick < 4) deathTick += 1 else - owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") - var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) - var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/perfluorodecalin, /datum/reagent/medicine/oxandrolone) - healSnake.poison_type = pick(chems) - healSnake.name = "Asclepius's Snake" - healSnake.real_name = "Asclepius's Snake" - healSnake.desc = "A mystical snake previously trapped upon the Rod of Asclepius, now freed of its burden. Unlike the average snake, its bites contain chemicals with minor healing properties." - new /obj/effect/decal/cleanable/ash(owner.loc) - new /obj/item/rod_of_asclepius(owner.loc) - qdel(owner) + consume_owner() else if(iscarbon(owner)) var/mob/living/carbon/itemUser = owner @@ -406,12 +397,20 @@ //If user does not have the corresponding hand anymore, give them one and return the rod to their hand if(((hand % 2) == 0)) var/obj/item/bodypart/L = itemUser.newBodyPart(BODY_ZONE_R_ARM, FALSE, FALSE) - L.attach_limb(itemUser) - itemUser.put_in_hand(newRod, hand, forced = TRUE) + if(L.attach_limb(itemUser)) + itemUser.put_in_hand(newRod, hand, forced = TRUE) + else + qdel(L) + consume_owner() //we can't regrow, abort abort + return else var/obj/item/bodypart/L = itemUser.newBodyPart(BODY_ZONE_L_ARM, FALSE, FALSE) - L.attach_limb(itemUser) - itemUser.put_in_hand(newRod, hand, forced = TRUE) + if(L.attach_limb(itemUser)) + itemUser.put_in_hand(newRod, hand, forced = TRUE) + else + qdel(L) + consume_owner() //see above comment + return to_chat(itemUser, "Your arm suddenly grows back with the Rod of Asclepius still attached!") else //Otherwise get rid of whatever else is in their hand and return the rod to said hand @@ -446,6 +445,19 @@ var/mob/living/simple_animal/SM = L SM.adjustHealth(-3.5, forced = TRUE) +/datum/status_effect/hippocraticOath/proc/consume_owner() + owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") + var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) + var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/C2/convermol, /datum/reagent/medicine/oxandrolone) + healSnake.poison_type = pick(chems) + healSnake.name = "Asclepius's Snake" + healSnake.real_name = "Asclepius's Snake" + healSnake.desc = "A mystical snake previously trapped upon the Rod of Asclepius, now freed of its burden. Unlike the average snake, its bites contain chemicals with minor healing properties." + new /obj/effect/decal/cleanable/ash(owner.loc) + new /obj/item/rod_of_asclepius(owner.loc) + qdel(owner) + + /datum/status_effect/good_music id = "Good Music" alert_type = null @@ -476,7 +488,7 @@ owner.adjustBruteLoss(-25) owner.adjustFireLoss(-25) owner.remove_CC() - owner.bodytemperature = BODYTEMP_NORMAL + owner.bodytemperature = owner.get_body_temp_normal() return TRUE /datum/status_effect/regenerative_core/on_remove() diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index ab83c39f40b..5c53475e2e8 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -246,9 +246,9 @@ status_type = STATUS_EFFECT_REPLACE alert_type = null var/mutable_appearance/marked_underlay - var/obj/item/twohanded/kinetic_crusher/hammer_synced + var/obj/item/kinetic_crusher/hammer_synced -/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/kinetic_crusher/new_hammer_synced) +/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/kinetic_crusher/new_hammer_synced) . = ..() if(.) hammer_synced = new_hammer_synced diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 659abb72506..454bdb395b6 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -22,7 +22,7 @@ /datum/status_effect/freon/tick() owner.update_mobility() - if(can_melt && owner.bodytemperature >= BODYTEMP_NORMAL) + if(can_melt && owner.bodytemperature >= owner.get_body_temp_normal()) qdel(src) /datum/status_effect/freon/proc/owner_resist() diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 72c449e5ffa..92a620da874 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -151,6 +151,8 @@ heirloom_type = pick(/obj/item/clothing/neck/stethoscope, /obj/item/bodybag) if("Paramedic") heirloom_type = pick(/obj/item/clothing/neck/stethoscope, /obj/item/bodybag) + if("Psychologist") + heirloom_type = /obj/item/storage/pill_bottle if("Chemist") heirloom_type = /obj/item/book/manual/wiki/chemistry if("Virologist") diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index c69d13d1792..64b6cec0e07 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -168,3 +168,55 @@ SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H) to_chat(quirk_holder, "There is a pinpointer [where], which can help you find your way around. Click in-hand to activate.") + +/datum/quirk/bald + name = "Smooth-Headed" + desc = "You have no hair and are quite insecure about it! Keep your wig on, or at least your head covered up." + value = 0 + mob_trait = TRAIT_BALD + gain_text = "Your head is as smooth as can be, it's terrible." + lose_text = "Your head itches, could it be... growing hair?!" + medical_record_text = "Patient starkly refused to take off headwear during examination." + ///The user's starting hairstyle + var/old_hair + +/datum/quirk/bald/add() + var/mob/living/carbon/human/H = quirk_holder + old_hair = H.hairstyle + H.hairstyle = "Bald" + H.update_hair() + RegisterSignal(H, COMSIG_CARBON_EQUIP_HAT, .proc/equip_hat) + RegisterSignal(H, COMSIG_CARBON_UNEQUIP_HAT, .proc/unequip_hat) + +/datum/quirk/bald/remove() + var/mob/living/carbon/human/H = quirk_holder + H.hairstyle = old_hair + H.update_hair() + UnregisterSignal(H, list(COMSIG_CARBON_EQUIP_HAT, COMSIG_CARBON_UNEQUIP_HAT)) + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "bad_hair_day") + +/datum/quirk/bald/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + var/obj/item/clothing/head/wig/natural/W = new(get_turf(H)) + if (old_hair == "Bald") + W.hairstyle = pick(GLOB.hairstyles_list - "Bald") + else + W.hairstyle = old_hair + W.update_icon() + var/list/slots = list ( + "head" = ITEM_SLOT_HEAD, + "backpack" = ITEM_SLOT_BACKPACK, + "hands" = ITEM_SLOT_HANDS, + ) + H.equip_in_one_of_slots(W, slots , qdel_on_fail = TRUE) + +///Checks if the headgear equipped is a wig and sets the mood event accordingly +/datum/quirk/bald/proc/equip_hat(mob/user, obj/item/hat) + if(istype(hat, /obj/item/clothing/head/wig)) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_hair_day", /datum/mood_event/confident_mane) //Our head is covered, but also by a wig so we're happy. + else + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "bad_hair_day") //Our head is covered + +///Applies a bad moodlet for having an uncovered head +/datum/quirk/bald/proc/unequip_hat(mob/user, obj/item/clothing, force, newloc, no_move, invdrop, silent) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_hair_day", /datum/mood_event/bald) diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index f8ff3df98fb..c6b2b291fef 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -18,7 +18,7 @@ area_type = /area protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer, - /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/security/prison/toilet, /area/shuttle) + /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison/safe, /area/security/prison/toilet) target_trait = ZTRAIT_STATION immunity_type = "rad" diff --git a/code/datums/wires/explosive.dm b/code/datums/wires/explosive.dm index 5bd26df0a30..4a8f5d2453d 100644 --- a/code/datums/wires/explosive.dm +++ b/code/datums/wires/explosive.dm @@ -43,7 +43,7 @@ message_admins("\An [assembly] has pulsed a grenade, which was installed by [fingerprint].") log_game("\An [assembly] has pulsed a grenade, which was installed by [fingerprint].") var/mob/M = get_mob_by_ckey(fingerprint) - var/turf/T = get_turf(M) + var/turf/T = get_turf(M) G.log_grenade(M, T) G.prime() @@ -113,8 +113,8 @@ /datum/wires/explosive/gibtonite - holder_type = /obj/item/twohanded/required/gibtonite + holder_type = /obj/item/gibtonite /datum/wires/explosive/gibtonite/explode() - var/obj/item/twohanded/required/gibtonite/P = holder + var/obj/item/gibtonite/P = holder P.GibtoniteReaction(null, 2) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 35b508e85c6..a148308d00e 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -116,6 +116,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Security Maintenance" icon_state = "maint_sec" +/area/maintenance/department/security/upper + name = "Upper Security Maintenance" + /area/maintenance/department/security/brig name = "Brig Maintenance" icon_state = "maint_brig" @@ -164,6 +167,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Aft Maintenance" icon_state = "amaint" +/area/maintenance/aft/upper + name = "Upper Aft Maintenance" + /area/maintenance/aft/secondary name = "Aft Maintenance" icon_state = "amaint_2" @@ -180,6 +186,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Fore Maintenance" icon_state = "fmaint" +/area/maintenance/fore/upper + name = "Upper Fore Maintenance" + /area/maintenance/fore/secondary name = "Fore Maintenance" icon_state = "fmaint_2" @@ -188,6 +197,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Starboard Maintenance" icon_state = "smaint" +/area/maintenance/starboard/upper + name = "Upper Starboard Maintenance" + /area/maintenance/starboard/central name = "Central Starboard Maintenance" icon_state = "smaint" @@ -255,6 +267,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Central Primary Hallway" icon_state = "hallC" +/area/hallway/primary/upper + name = "Upper Central Primary Hallway" + icon_state = "hallC" + + /area/hallway/secondary/command name = "Command Hallway" icon_state = "bridge_hallway" @@ -345,6 +362,15 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "Sleep" safe = TRUE +/area/crew_quarters/dorms/barracks + name = "Sleep Barracks" + +/area/crew_quarters/dorms/barracks/male + name = "Male Sleep Barracks" + +/area/crew_quarters/dorms/barracks/female + name = "Female Sleep Barracks" + /area/crew_quarters/toilet name = "Dormitory Toilets" icon_state = "toilet" @@ -377,6 +403,13 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Unisex Locker Room" icon_state = "fitness" +/area/crew_quarters/fitness/locker_room/male + name = "Male Locker Room" + +/area/crew_quarters/fitness/locker_room/female + name = "Female Locker Room" + + /area/crew_quarters/fitness/recreation name = "Recreation Area" icon_state = "fitness" @@ -431,6 +464,22 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Library Lounge" icon_state = "library" +/area/library/artgallery + name = " Art Gallery" + icon_state = "library" + +/area/library/private + name = "Library Private Study" + icon_state = "library" + +/area/library/upper + name = "Library Upper Floor" + icon_state = "library" + +/area/library/printer + name = "Library Printer Room" + icon_state = "library" + /area/library/abandoned name = "Abandoned Library" icon_state = "library" @@ -485,6 +534,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "atmos" flags_1 = CULT_PERMITTED_1 +/area/engine/atmos/upper + name = "Upper Atmospherics" + /area/engine/atmospherics_engine name = "Atmospherics Engine" icon_state = "atmos_engine" @@ -578,6 +630,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Port Bow Solar Array" icon_state = "panelsFP" +/area/solar/aisat + name = "AI Satellite Solars" + icon_state = "yellow" //Solar Maint @@ -655,6 +710,30 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Medbay Storage" icon_state = "medbay2" +/area/medical/paramedic + name = "Paramedic Dispatch" + icon_state = "medbay2" + +/area/medical/office + name = "Medical Office" + icon_state = "medoffice" + +/area/medical/surgery/room_c + name = "Surgery C" + icon_state = "surgery" + +/area/medical/surgery/room_d + name = "Surgery D" + icon_state = "surgery" + +/area/medical/break_room + name = "Medical Break Room" + icon_state = "medbay2" + +/area/medical/coldroom + name = "Medical Cold Room" + icon_state = "kitchen_cold" + /area/medical/patients_rooms name = "Patients' Rooms" icon_state = "patients" @@ -709,6 +788,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Medbay Treatment Center" icon_state = "exam_room" +/area/medical/psychology + name = "Psychology Office" + icon_state = "psychology" //Security @@ -725,6 +807,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Brig" icon_state = "brig" +/area/security/brig/upper + name = "Brig Overlook" + /area/security/courtroom name = "Courtroom" icon_state = "courtroom" @@ -733,9 +818,45 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Prison Wing" icon_state = "sec_prison" -/area/security/prison/toilet +/area/security/prison/toilet //radproof name = "Prison Toilet" - icon_state = "sec_prison" + icon_state = "sec_prison_safe" + +/area/security/prison/safe //radproof + name = "Prison Wing Cells" + icon_state = "sec_prison_safe" + +/area/security/prison/upper + name = "Upper Prison Wing" + icon_state = "prison_upper" + +/area/security/prison/visit + name = "Prison Visitation Area" + icon_state = "prison_visit" + +/area/security/prison/rec + name = "Prison Rec Room" + icon_state = "prison_rec" + +/area/security/prison/mess + name = "Prison Mess Hall" + icon_state = "prison_mess" + +/area/security/prison/work + name = "Prison Work Room" + icon_state = "prison_work" + +/area/security/prison/shower + name = "Prison Shower" + icon_state = "prison_shower" + +/area/security/prison/workout + name = "Prison Gym" + icon_state = "prison_workout" + +/area/security/prison/garden + name = "Prison Garden" + icon_state = "prison_garden" /area/security/processing name = "Labor Shuttle Dock" @@ -831,6 +952,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Warehouse" icon_state = "cargo_warehouse" +/area/quartermaster/warehouse/upper + name = "Upper Warehouse" + /area/quartermaster/office name = "Cargo Office" icon_state = "quartoffice" @@ -843,6 +967,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Quartermaster's Office" icon_state = "quart" +/area/quartermaster/qm/perch + name = "Quartermaster's Perch" + icon_state = "quartperch" + /area/quartermaster/miningdock name = "Mining Dock" icon_state = "mining" @@ -860,6 +988,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Hydroponics" icon_state = "hydro" +/area/hydroponics/upper + name = "Upper Hydroponics" + icon_state = "hydro" + /area/hydroponics/garden name = "Garden" icon_state = "garden" @@ -1016,11 +1148,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "armory" ambientsounds = HIGHSEC +/area/ai_monitored/security/armory/upper + name = "Upper Armory" + /area/ai_monitored/storage/eva name = "EVA Storage" icon_state = "eva" ambientsounds = HIGHSEC +/area/ai_monitored/storage/eva/upper + name = "Upper EVA Storage" + /area/ai_monitored/storage/satellite name = "AI Satellite Maint" icon_state = "storage" @@ -1093,3 +1231,20 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat/server name = "Telecomms Server Room" icon_state = "tcomsatcham" + +/area/tcommsat/server/upper + name = "Upper Telecomms Server Room" + +//External Hull Access +/area/maintenance/external + name = "External Hull Access" + icon_state = "amaint" + +/area/maintenance/external/aft + name = "Aft External Hull Access" + +/area/maintenance/external/port + name = "Port External Hull Access" + +/area/maintenance/external/port/bow + name = "Port Bow External Hull Access" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 2953b2ce064..4c2b70c7668 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -4,7 +4,6 @@ * A grouping of tiles into a logical space, mostly used by map editors */ /area - level = null name = "Space" icon = 'icons/turf/areas.dmi' icon_state = "unknown" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f576a5d4b35..9005e43bd25 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -7,7 +7,6 @@ /atom layer = TURF_LAYER plane = GAME_PLANE - var/level = 2 ///If non-null, overrides a/an/some in all cases var/article @@ -141,6 +140,8 @@ * * [/turf/open/space/Initialize] */ /atom/proc/Initialize(mapload, ...) + SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(TRUE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 @@ -222,6 +223,7 @@ ///Can the mover object pass this atom, while heading for the target turf /atom/proc/CanPass(atom/movable/mover, turf/target) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) if(mover.movement_type & UNSTOPPABLE) return TRUE . = CanAllowThrough(mover, target) @@ -232,6 +234,7 @@ /// Returns true or false to allow the mover to move through src /atom/proc/CanAllowThrough(atom/movable/mover, turf/target) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) return !density /** @@ -794,6 +797,7 @@ * Not recommended to use, listen for the [COMSIG_ATOM_DIR_CHANGE] signal instead (sent by this proc) */ /atom/proc/setDir(newdir) + SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir) dir = newdir @@ -1269,7 +1273,10 @@ return max_grav if(isspaceturf(T)) // Turf never has gravity - return 0 + return FALSE + if(istype(T, /turf/open/openspace)) //openspace in a space area doesn't get gravity + if(istype(get_area(T), /area/space)) + return FALSE var/area/A = get_area(T) if(A.has_gravity) // Areas which always has gravity diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 1791febbe00..5774e1b1e27 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -43,6 +43,37 @@ var/zfalling = FALSE + /// Either FALSE, [EMISSIVE_BLOCK_GENERIC], or [EMISSIVE_BLOCK_UNIQUE] + var/blocks_emissive = FALSE + ///Internal holder for emissive blocker object, do not use directly use blocks_emissive + var/atom/movable/emissive_blocker/em_block + + +/atom/movable/Initialize(mapload) + . = ..() + switch(blocks_emissive) + if(EMISSIVE_BLOCK_GENERIC) + update_emissive_block() + if(EMISSIVE_BLOCK_UNIQUE) + render_target = ref(src) + em_block = new(src, render_target) + vis_contents += em_block + +/atom/movable/Destroy() + QDEL_NULL(em_block) + return ..() + +/atom/movable/proc/update_emissive_block() + if(blocks_emissive != EMISSIVE_BLOCK_GENERIC) + return + if(length(managed_vis_overlays)) + for(var/a in managed_vis_overlays) + var/obj/effect/overlay/vis/vs + if(vs.plane == EMISSIVE_BLOCKER_PLANE) + SSvis_overlays.remove_vis_overlay(src, list(vs)) + break + SSvis_overlays.add_vis_overlay(src, icon, icon_state, EMISSIVE_BLOCKER_LAYER, EMISSIVE_BLOCKER_PLANE, dir) + /atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction) if(!direction) direction = DOWN @@ -370,6 +401,7 @@ //Called after a successful Move(). By this point, we've already moved /atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) + SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) if (!inertia_moving) inertia_next_move = world.time + inertia_move_delay @@ -412,6 +444,8 @@ //oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! /atom/movable/Crossed(atom/movable/AM, oldloc) + SHOULD_CALL_PARENT(TRUE) + . = ..() SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) /atom/movable/Uncross(atom/movable/AM, atom/newloc) @@ -549,8 +583,13 @@ /atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 - SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) - return hit_atom.hitby(src, throwingdatum=throwingdatum) + var/hitpush = TRUE + var/impact_signal = SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) + if(impact_signal & COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH) + hitpush = FALSE // hacky, tie this to something else or a proper workaround later + + if(impact_signal & ~COMPONENT_MOVABLE_IMPACT_NEVERMIND) // in case a signal interceptor broke or deleted the thing before we could process our hit + return hit_atom.hitby(src, throwingdatum=throwingdatum, hitpush=hitpush) /atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked, datum/thrownthing/throwingdatum) if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO)))) @@ -685,6 +724,7 @@ /// Returns true or false to allow src to move through the blocker, mover has final say /atom/movable/proc/CanPassThrough(atom/blocker, turf/target, blocker_opinion) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) return blocker_opinion /// called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index f7ba529395c..0e3ef4f56bd 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -16,7 +16,7 @@ if(!istype(M)) return FALSE if(M.mind) - if(ishuman(M) && (M.mind.isholy)) + if(ishuman(M) && (M.mind.holy_role)) return FALSE if(specific_cult && specific_cult.is_sacrifice_target(M.mind)) return FALSE diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 574df08d169..853b805e940 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -1,8 +1,3 @@ -#define CURRENT_LIVING_PLAYERS 1 -#define CURRENT_LIVING_ANTAGS 2 -#define CURRENT_DEAD_PLAYERS 3 -#define CURRENT_OBSERVERS 4 - #define ONLY_RULESET 1 #define HIGHLANDER_RULESET 2 #define TRAITOR_RULESET 4 @@ -95,8 +90,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) var/list/current_rules = list() /// List of executed rulesets. var/list/executed_rules = list() - /// Associative list of current players, in order: living players, living antagonists, dead players and observers. - var/list/list/current_players = list(CURRENT_LIVING_PLAYERS, CURRENT_LIVING_ANTAGS, CURRENT_DEAD_PLAYERS, CURRENT_OBSERVERS) /// When world.time is over this number the mode tries to inject a latejoin ruleset. var/latejoin_injection_cooldown = 0 /// When world.time is over this number the mode tries to inject a midround ruleset. @@ -105,8 +98,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) var/forced_injection = FALSE /// Forced ruleset to be executed for the next latejoin. var/datum/dynamic_ruleset/latejoin/forced_latejoin_rule = null - /// When current_players was updated last time. - var/pop_last_updated = 0 /// How many percent of the rounds are more peaceful. var/peaceful_percentage = 50 /// If a highlander executed. @@ -198,7 +189,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) . = "Central Command Status Summary
" switch(round(threat_level)) if(0 to 19) - update_playercounts() if(!current_players[CURRENT_LIVING_ANTAGS].len) . += "Peaceful Waypoint
" . += "Your station orbits deep within controlled, core-sector systems and serves as a waypoint for routine traffic through Nanotrasen's trade empire. Due to the combination of high security, interstellar traffic, and low strategic value, it makes any direct threat of violence unlikely. Your primary enemies will be incompetence and bored crewmen: try to organize team-building events to keep staffers interested and productive." @@ -359,8 +349,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) return TRUE /datum/game_mode/dynamic/post_setup(report) - update_playercounts() - for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) rule.candidates.Cut() // The rule should not use candidates at this point as they all are null. addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay) @@ -564,7 +552,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(highlander_executed) return FALSE - update_playercounts() if ((forced || (new_rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && new_rule.cost <= threat))) new_rule.trim_candidates() if (new_rule.ready(forced)) @@ -609,10 +596,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) return FALSE /datum/game_mode/dynamic/process() - if (pop_last_updated < world.time - (60 SECONDS)) - pop_last_updated = world.time - update_playercounts() - for (var/datum/dynamic_ruleset/rule in current_rules) if(rule.rule_process() == RULESET_STOP_PROCESSING) // If rule_process() returns 1 (RULESET_STOP_PROCESSING), stop processing. current_rules -= rule @@ -633,7 +616,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) message_admins("DYNAMIC: Checking for midround injection.") log_game("DYNAMIC: Checking for midround injection.") - update_playercounts() if (get_injection_chance()) var/list/drafted_rules = list() for (var/datum/dynamic_ruleset/midround/rule in midround_rules) @@ -647,27 +629,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if (drafted_rules.len > 0) picking_midround_latejoin_rule(drafted_rules) -/// Updates current_players. -/datum/game_mode/dynamic/proc/update_playercounts() - current_players[CURRENT_LIVING_PLAYERS] = list() - current_players[CURRENT_LIVING_ANTAGS] = list() - current_players[CURRENT_DEAD_PLAYERS] = list() - current_players[CURRENT_OBSERVERS] = list() - for (var/mob/M in GLOB.player_list) - if (istype(M, /mob/dead/new_player)) - continue - if (M.stat != DEAD) - current_players[CURRENT_LIVING_PLAYERS].Add(M) - if (M.mind && (M.mind.special_role || M.mind.antag_datums?.len > 0)) - current_players[CURRENT_LIVING_ANTAGS].Add(M) - else - if (istype(M,/mob/dead/observer)) - var/mob/dead/observer/O = M - if (O.started_as_observer) // Observers - current_players[CURRENT_OBSERVERS].Add(M) - continue - current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow) - /// Gets the chance for latejoin and midround injection, the dry_run argument is only used for forced injection. /datum/game_mode/dynamic/proc/get_injection_chance(dry_run = FALSE) if(forced_injection) @@ -724,8 +685,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(EMERGENCY_ESCAPED_OR_ENDGAMED) // No more rules after the shuttle has left return - update_playercounts() - if (forced_latejoin_rule) forced_latejoin_rule.candidates = list(newPlayer) forced_latejoin_rule.trim_candidates() diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 8fab8717f08..33a1fc8dd86 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -91,6 +91,7 @@ requirements = list(101,101,70,40,30,20,20,20,20,20) high_population_requirement = 50 flags = HIGHLANDER_RULESET + blocking_rules = list(/datum/dynamic_ruleset/roundstart/revs) var/required_heads_of_staff = 3 var/finished = FALSE var/datum/team/revolution/revolution diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index b2b18c919e6..0133e142808 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -164,7 +164,7 @@ name = "Syndicate Sleeper Agent" antag_datum = /datum/antagonist/traitor antag_flag = ROLE_TRAITOR - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_roles = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("Cyborg", "AI", "Positronic Brain") required_candidates = 1 weight = 7 @@ -450,3 +450,48 @@ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by the midround ruleset.") log_game("DYNAMIC: [key_name(S)] was spawned as a Nightmare by the midround ruleset.") return S + +////////////////////////////////////////////// +// // +// SPACE DRAGON (GHOST) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/space_dragon + name = "Space Dragon" + antag_datum = /datum/antagonist/space_dragon + antag_flag = "Space Dragon" + antag_flag_override = ROLE_SPACE_DRAGON + enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 4 + cost = 10 + requirements = list(101,101,101,80,60,50,30,20,10,10) + high_population_requirement = 50 + repeatable = TRUE + var/list/spawn_locs = list() + +/datum/dynamic_ruleset/midround/from_ghosts/space_dragon/execute() + for(var/obj/effect/landmark/carpspawn/C in GLOB.landmarks_list) + spawn_locs += (C.loc) + if(!spawn_locs.len) + message_admins("No valid spawn locations found, aborting...") + return MAP_ERROR + . = ..() + +/datum/dynamic_ruleset/midround/from_ghosts/space_dragon/generate_ruleset_body(mob/applicant) + var/datum/mind/player_mind = new /datum/mind(applicant.key) + player_mind.active = TRUE + + var/mob/living/simple_animal/hostile/space_dragon/S = new (pick(spawn_locs)) + player_mind.transfer_to(S) + player_mind.assigned_role = "Space Dragon" + player_mind.special_role = "Space Dragon" + player_mind.add_antag_datum(/datum/antagonist/space_dragon) + + playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1) + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by the midround ruleset.") + log_game("DYNAMIC: [key_name(S)] was spawned as a Space Dragon by the midround ruleset.") + priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert") + return S diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index e64700d8084..ab7b54e05c5 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -11,7 +11,7 @@ antag_flag = ROLE_TRAITOR antag_datum = /datum/antagonist/traitor/ minimum_required_age = 0 - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("Cyborg") required_candidates = 1 weight = 5 @@ -51,7 +51,7 @@ name = "Blood Brothers" antag_flag = ROLE_BROTHER antag_datum = /datum/antagonist/brother/ - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("Cyborg", "AI") required_candidates = 2 weight = 4 @@ -101,7 +101,7 @@ name = "Changelings" antag_flag = ROLE_CHANGELING antag_datum = /datum/antagonist/changeling - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("AI", "Cyborg") required_candidates = 1 weight = 3 @@ -198,7 +198,7 @@ antag_flag = ROLE_CULTIST antag_datum = /datum/antagonist/cult minimum_required_age = 14 - restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel") + restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel") required_candidates = 2 weight = 3 cost = 35 @@ -343,7 +343,7 @@ antag_flag_override = ROLE_REV antag_datum = /datum/antagonist/rev/head minimum_required_age = 14 - restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") + restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") required_candidates = 3 weight = 2 delay = 7 MINUTES @@ -352,6 +352,7 @@ high_population_requirement = 10 antag_cap = list(3,3,3,3,3,3,3,3,3,3) flags = HIGHLANDER_RULESET + blocking_rules = list(/datum/dynamic_ruleset/latejoin/provocateur) // I give up, just there should be enough heads with 35 players... minimum_players = 35 var/datum/team/revolution/revolution @@ -514,7 +515,7 @@ name = "Devil" antag_flag = ROLE_DEVIL antag_datum = /datum/antagonist/devil - restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") + restricted_roles = list("Lawyer", "Curator", "Chaplain", "Prisoner", "Head of Security", "Captain", "AI") required_candidates = 1 weight = 3 cost = 0 @@ -568,7 +569,7 @@ name = "Monkey" antag_flag = ROLE_MONKEY antag_datum = /datum/antagonist/monkey/leader - restricted_roles = list("Cyborg", "AI") + restricted_roles = list("Cyborg", "AI", "Prisoner") required_candidates = 1 weight = 3 cost = 0 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fb583438835..606e8f052a6 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -52,6 +52,10 @@ var/gamemode_ready = FALSE //Is the gamemode all set up and ready to start checking for ending conditions. var/setup_error //What stopepd setting up the mode. + /// Associative list of current players, in order: living players, living antagonists, dead players and observers. + var/list/list/current_players = list(CURRENT_LIVING_PLAYERS = list(), CURRENT_LIVING_ANTAGS = list(), CURRENT_DEAD_PLAYERS = list(), CURRENT_OBSERVERS = list()) + + /datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. to_chat(world, "The gamemode is: [name]!") to_chat(world, "[announce_text]") diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm new file mode 100644 index 00000000000..97bb8d25ad3 --- /dev/null +++ b/code/game/gamemodes/gang/gang.dm @@ -0,0 +1,457 @@ +#define LOWPOP_FAMILIES_COUNT 50 + +#define TWO_STARS_HIGHPOP 11 +#define THREE_STARS_HIGHPOP 16 +#define FOUR_STARS_HIGHPOP 21 +#define FIVE_STARS_HIGHPOP 31 + +#define TWO_STARS_LOW 6 +#define THREE_STARS_LOW 9 +#define FOUR_STARS_LOW 12 +#define FIVE_STARS_LOW 15 + +#define CREW_SIZE_MIN 4 +#define CREW_SIZE_MAX 8 + + +GLOBAL_VAR_INIT(deaths_during_shift, 0) +/datum/game_mode/gang + name = "Families" + config_tag = "families" + antag_flag = ROLE_FAMILIES + false_report_weight = 5 + required_players = 40 + required_enemies = 6 + recommended_enemies = 6 + announce_span = "danger" + announce_text = "Grove For Lyfe!" + reroll_friendly = FALSE + restricted_jobs = list("Cyborg", "AI", "Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel")//N O + protected_jobs = list() + var/check_counter = 0 + var/endtime = null + var/fuckingdone = FALSE + var/time_to_end = 60 MINUTES + var/gangs_to_generate = 3 + var/list/gangs_to_use + var/list/datum/mind/gangbangers = list() + var/list/datum/mind/pigs = list() + var/list/datum/mind/undercover_cops = list() + var/list/gangs = list() + var/gangs_still_alive = 0 + var/sent_announcement = FALSE + var/list/gang_locations = list() + var/lock_stars = FALSE + var/cops_arrived = FALSE + var/gang_balance_cap = 5 + var/current_stars = "wanted_0" + +/datum/game_mode/gang/warriors + name = "Warriors" + config_tag = "warriors" + announce_text = "Can you survive this onslaught?" + gangs_to_generate = 11 + gang_balance_cap = 3 + +/datum/game_mode/gang/warriors/pre_setup() + gangs_to_use = subtypesof(/datum/antagonist/gang) + gangs_to_generate = gangs_to_use.len + . = ..() + +/datum/game_mode/gang/pre_setup() + gangs_to_use = subtypesof(/datum/antagonist/gang) + for(var/j = 0, j < gangs_to_generate, j++) + if (!antag_candidates.len) + break + var/datum/mind/gangbanger = antag_pick(antag_candidates) + gangbangers += gangbanger + gangbanger.restricted_roles = restricted_jobs + log_game("[key_name(gangbanger)] has been selected as a starting gangster!") + antag_candidates.Remove(gangbanger) + for(var/j = 0, j < gangs_to_generate, j++) + var/datum/mind/one_eight_seven_on_an_undercover_cop = antag_pick(antag_candidates) + pigs += one_eight_seven_on_an_undercover_cop + undercover_cops += one_eight_seven_on_an_undercover_cop + one_eight_seven_on_an_undercover_cop.restricted_roles = restricted_jobs + log_game("[key_name(one_eight_seven_on_an_undercover_cop)] has been selected as a starting undercover cop!") + antag_candidates.Remove(one_eight_seven_on_an_undercover_cop) + endtime = world.time + time_to_end + return TRUE + +/datum/game_mode/gang/post_setup() + var/replacement_gangsters = 0 + var/replacement_cops = 0 + for(var/datum/mind/gangbanger in gangbangers) + if(!ishuman(gangbanger.current)) + gangbangers.Remove(gangbanger) + log_game("[gangbanger] was not a human, and thus has lost their gangster role.") + replacement_gangsters++ + if(replacement_gangsters) + for(var/j = 0, j < replacement_gangsters, j++) + if(!antag_candidates.len) + log_game("Unable to find more replacement gangsters. Not all of the gangs will spawn.") + break + var/datum/mind/gangbanger = antag_pick(antag_candidates) + gangbangers += gangbanger + log_game("[key_name(gangbanger)] has been selected as a replacement gangster!") + for(var/datum/mind/undercover_cop in undercover_cops) + if(!ishuman(undercover_cop.current)) + undercover_cops.Remove(undercover_cop) + pigs.Remove(undercover_cop) + log_game("[undercover_cop] was not a human, and thus has lost their undercover cop role.") + replacement_cops++ + if(replacement_cops) + for(var/j = 0, j < replacement_cops, j++) + if(!antag_candidates.len) + log_game("Unable to find more replacement undercover cops. Not all of the gangs will spawn.") + break + var/datum/mind/undercover_cop = antag_pick(antag_candidates) + undercover_cops += undercover_cop + pigs += undercover_cop + log_game("[key_name(undercover_cop)] has been selected as a replacement undercover cop!") + for(var/datum/mind/undercover_cop in undercover_cops) + var/datum/antagonist/ert/families/undercover_cop/one_eight_seven_on_an_undercover_cop = new() + undercover_cop.add_antag_datum(one_eight_seven_on_an_undercover_cop) + undercover_cop.current.playsound_local(undercover_cop.current, 'sound/effects/families_police.ogg', 100, FALSE, pressure_affected = FALSE) + + for(var/datum/mind/gangbanger in gangbangers) + var/gang_to_use = pick_n_take(gangs_to_use) + var/datum/antagonist/gang/new_gangster = new gang_to_use() + var/datum/team/gang/ballas = new /datum/team/gang() + new_gangster.my_gang = ballas + new_gangster.starter_gangster = TRUE + gangs += ballas + ballas.add_member(gangbanger) + ballas.name = new_gangster.gang_name + + ballas.acceptable_clothes = new_gangster.acceptable_clothes.Copy() + ballas.free_clothes = new_gangster.free_clothes.Copy() + ballas.my_gang_datum = new_gangster + + for(var/C in ballas.free_clothes) + var/obj/O = new C(gangbanger.current) + var/list/slots = list ( + "backpack" = ITEM_SLOT_BACKPACK, + "left pocket" = ITEM_SLOT_LPOCKET, + "right pocket" = ITEM_SLOT_RPOCKET + ) + var/mob/living/carbon/human/H = gangbanger.current + var/equipped = H.equip_in_one_of_slots(O, slots) + if(!equipped) + to_chat(gangbanger.current, "Unfortunately, you could not bring your [O] to this shift. You will need to find one.") + qdel(O) + + gangbanger.add_antag_datum(new_gangster) + gangbanger.current.playsound_local(gangbanger.current, 'sound/ambience/antag/thatshowfamiliesworks.ogg', 100, FALSE, pressure_affected = FALSE) + to_chat(gangbanger.current, "As you're the first gangster, your uniform and spraycan are in your inventory!") + addtimer(CALLBACK(src, .proc/announce_gang_locations), 5 MINUTES) + addtimer(CALLBACK(src, .proc/five_minute_warning), time_to_end - 5 MINUTES) + SSshuttle.registerHostileEnvironment(src) + gamemode_ready = TRUE + ..() + +/datum/game_mode/gang/proc/announce_gang_locations() + var/list/readable_gang_names = list() + for(var/GG in gangs) + var/datum/team/gang/G = GG + readable_gang_names += "[G.name]" + var/finalized_gang_names = english_list(readable_gang_names) + priority_announce("Julio G coming to you live from Radio Los Spess! We've been hearing reports of gang activity on [station_name()], with the [finalized_gang_names] duking it out, looking for fresh territory and drugs to sling! Stay safe out there for the hour 'till the space cops get there, and keep it cool, yeah?\n\n The local jump gates are shut down for about an hour due to some maintenance troubles, so if you wanna split from the area you're gonna have to wait an hour. \n Play music, not gunshots, I say. Peace out!", "Radio Los Spess", 'sound/voice/beepsky/radio.ogg') + sent_announcement = TRUE + +/datum/game_mode/gang/proc/five_minute_warning() + priority_announce("Julio G coming to you live from Radio Los Spess! The space cops are closing in on [station_name()] and will arrive in about 5 minutes! Better clear on out of there if you don't want to get hurt!", "Radio Los Spess", 'sound/voice/beepsky/radio.ogg') + +/datum/game_mode/gang/check_win() + var/alive_gangsters = 0 + var/alive_cops = 0 + for(var/datum/mind/gangbanger in gangbangers) + if(!ishuman(gangbanger.current)) + continue + var/mob/living/carbon/human/H = gangbanger.current + if(H.stat) + continue + alive_gangsters++ + for(var/datum/mind/bacon in pigs) + if(!ishuman(bacon.current)) // always returns false + continue + var/mob/living/carbon/human/H = bacon.current + if(H.stat) + continue + alive_cops++ + if(alive_gangsters > alive_cops) + SSticker.mode_result = "win - gangs survived" + SSticker.news_report = GANG_OPERATING + return TRUE + SSticker.mode_result = "loss - police destroyed the gangs" + SSticker.news_report = GANG_DESTROYED + return FALSE + +/datum/game_mode/gang/process() + if(sent_announcement) + for(var/mob/M in GLOB.player_list) + if(M.hud_used && !istype(M, /mob/dead/new_player)) + var/datum/hud/H = M.hud_used + var/icon_state_to_use = "wanted_1" + if(lock_stars) + H.wanted_lvl.icon_state = current_stars + continue + if(GLOB.joined_player_list.len > LOWPOP_FAMILIES_COUNT) + switch(GLOB.deaths_during_shift) + if(0 to TWO_STARS_HIGHPOP-1) + icon_state_to_use = "wanted_1" + if(TWO_STARS_HIGHPOP to THREE_STARS_HIGHPOP-1) + icon_state_to_use = "wanted_2" + if(THREE_STARS_HIGHPOP to FOUR_STARS_HIGHPOP-1) + icon_state_to_use = "wanted_3" + if(FOUR_STARS_HIGHPOP to FIVE_STARS_HIGHPOP-1) + icon_state_to_use = "wanted_4" + if(FIVE_STARS_HIGHPOP to INFINITY) + icon_state_to_use = "wanted_5" + else + switch(GLOB.deaths_during_shift) + if(0 to TWO_STARS_LOW-1) + icon_state_to_use = "wanted_1" + if(TWO_STARS_LOW to THREE_STARS_LOW-1) + icon_state_to_use = "wanted_2" + if(THREE_STARS_LOW to FOUR_STARS_LOW-1) + icon_state_to_use = "wanted_3" + if(FOUR_STARS_LOW to FIVE_STARS_LOW-1) + icon_state_to_use = "wanted_4" + if(FIVE_STARS_LOW to INFINITY) + icon_state_to_use = "wanted_5" + if(cops_arrived) + icon_state_to_use += "_active" + lock_stars = TRUE + current_stars = icon_state_to_use + H.wanted_lvl.icon_state = icon_state_to_use + + check_counter++ + if(check_counter >= 5) + if (world.time > endtime && !fuckingdone) + fuckingdone = TRUE + send_in_the_fuzz() + check_counter = 0 + SSticker.mode.check_win() + + check_tagged_turfs() + check_gang_clothes() + check_rollin_with_crews() + +/datum/game_mode/gang/proc/send_in_the_fuzz() + var/team_size + var/cops_to_send + var/announcement_message = "PUNK ASS BALLA BITCH" + var/announcer = "Spinward Stellar Coalition" + if(GLOB.joined_player_list.len > LOWPOP_FAMILIES_COUNT) + switch(GLOB.deaths_during_shift) + if(0 to TWO_STARS_HIGHPOP-1) + team_size = 8 + cops_to_send = /datum/antagonist/ert/families/beatcop + announcement_message = "Hello, crewmembers of [station_name()]! We've received a few calls about some potential violent gang activity on board your station, so we're sending some beat cops to check things out. Nothing extreme, just a courtesy call. However, while they check things out for about 10 minutes, we're going to have to ask that you keep your escape shuttle parked.\n\nHave a pleasant day!" + announcer = "Spinward Stellar Coalition Police Department" + if(TWO_STARS_HIGHPOP to THREE_STARS_HIGHPOP-1) + team_size = 9 + cops_to_send = /datum/antagonist/ert/families/beatcop/armored + announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of violent gang activity from your station. We are dispatching some armed officers to help keep the peace and investigate matters. Do not get in their way, and comply with any and all requests from them. We have blockaded the local warp gate, and your shuttle cannot depart for another 10 minutes.\n\nHave a secure day." + announcer = "Spinward Stellar Coalition Police Department" + if(THREE_STARS_HIGHPOP to FOUR_STARS_HIGHPOP-1) + team_size = 10 + cops_to_send = /datum/antagonist/ert/families/beatcop/swat + announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of extreme gang activity from your station resulting in heavy civilian casualties. The Spinward Stellar Coalition does not tolerate abuse towards our citizens, and we will be responding in force to keep the peace and reduce civilian casualties. We have your station surrounded, and all gangsters must drop their weapons and surrender peacefully.\n\nHave a secure day." + announcer = "Spinward Stellar Coalition Police Department" + if(FOUR_STARS_HIGHPOP to FIVE_STARS_HIGHPOP-1) + team_size = 11 + cops_to_send = /datum/antagonist/ert/families/beatcop/fbi + announcement_message = "We are dispatching our top agents to [station_name()] at the request of the Spinward Stellar Coalition government due to an extreme terrorist level threat against this Nanotrasen owned station. All gangsters must surrender IMMEDIATELY. Failure to comply can and will result in death. We have blockaded your warp gates and will not allow any escape until the situation is resolved within our standard response time of 10 minutes.\n\nSurrender now or face the consequences of your actions." + announcer = "Federal Bureau of Investigation" + if(FIVE_STARS_HIGHPOP to INFINITY) + team_size = 12 + cops_to_send = /datum/antagonist/ert/families/beatcop/military + announcement_message = "Due to an insane level of civilian casualties aboard [station_name()], we have dispatched the National Guard to curb any and all gang activity on board the station. We have heavy cruisers watching the shuttle. Attempt to leave before we allow you to, and we will obliterate your station and your escape shuttle.\n\nYou brought this on yourselves by murdering so many civilians." + announcer = "Spinward Stellar Coalition National Guard" + else + switch(GLOB.deaths_during_shift) + if(0 to TWO_STARS_LOW-1) + team_size = 5 + cops_to_send = /datum/antagonist/ert/families/beatcop + announcement_message = "Hello, crewmembers of [station_name()]! We've received a few calls about some potential violent gang activity on board your station, so we're sending some beat cops to check things out. Nothing extreme, just a courtesy call. However, while they check things out for about 10 minutes, we're going to have to ask that you keep your escape shuttle parked.\n\nHave a pleasant day!" + announcer = "Spinward Stellar Coalition Police Department" + if(TWO_STARS_LOW to THREE_STARS_LOW-1) + team_size = 6 + cops_to_send = /datum/antagonist/ert/families/beatcop/armored + announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of violent gang activity from your station. We are dispatching some armed officers to help keep the peace and investigate matters. Do not get in their way, and comply with any and all requests from them. We have blockaded the local warp gate, and your shuttle cannot depart for another 10 minutes.\n\nHave a secure day." + announcer = "Spinward Stellar Coalition Police Department" + if(THREE_STARS_LOW to FOUR_STARS_LOW-1) + team_size = 7 + cops_to_send = /datum/antagonist/ert/families/beatcop/swat + announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of extreme gang activity from your station resulting in heavy civilian casualties. The Spinward Stellar Coalition does not tolerate abuse towards our citizens, and we will be responding in force to keep the peace and reduce civilian casualties. We have your station surrounded, and all gangsters must drop their weapons and surrender peacefully.\n\nHave a secure day." + announcer = "Spinward Stellar Coalition Police Department" + if(FOUR_STARS_LOW to FIVE_STARS_LOW-1) + team_size = 8 + cops_to_send = /datum/antagonist/ert/families/beatcop/fbi + announcement_message = "We are dispatching our top agents to [station_name()] at the request of the Spinward Stellar Coalition government due to an extreme terrorist level threat against this Nanotrasen owned station. All gangsters must surrender IMMEDIATELY. Failure to comply can and will result in death. We have blockaded your warp gates and will not allow any escape until the situation is resolved within our standard response time of 10 minutes.\n\nSurrender now or face the consequences of your actions." + announcer = "Federal Bureau of Investigation" + if(FIVE_STARS_LOW to INFINITY) + team_size = 10 + cops_to_send = /datum/antagonist/ert/families/beatcop/military + announcement_message = "Due to an insane level of civilian casualties aboard [station_name()], we have dispatched the National Guard to curb any and all gang activity on board the station. We have heavy cruisers watching the shuttle. Attempt to leave before we allow you to, and we will obliterate your station and your escape shuttle.\n\nYou brought this on yourselves by murdering so many civilians." + announcer = "Spinward Stellar Coalition National Guard" + + priority_announce(announcement_message, announcer, 'sound/effects/families_police.ogg') + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to help clean up crime on this station?", "deathsquad", null) + + + if(candidates.len) + //Pick the (un)lucky players + var/numagents = min(team_size,candidates.len) + + var/list/spawnpoints = GLOB.emergencyresponseteamspawn + var/index = 0 + while(numagents && candidates.len) + var/spawnloc = spawnpoints[index+1] + //loop through spawnpoints one at a time + index = (index + 1) % spawnpoints.len + var/mob/dead/observer/chosen_candidate = pick(candidates) + candidates -= chosen_candidate + if(!chosen_candidate.key) + continue + + //Spawn the body + var/mob/living/carbon/human/cop = new(spawnloc) + chosen_candidate.client.prefs.copy_to(cop) + cop.key = chosen_candidate.key + + //Give antag datum + var/datum/antagonist/ert/ert_antag = new cops_to_send + + cop.mind.add_antag_datum(ert_antag) + cop.mind.assigned_role = ert_antag.name + SSjob.SendToLateJoin(cop) + + //Logging and cleanup + log_game("[key_name(cop)] has been selected as an [ert_antag.name]") + numagents-- + cops_arrived = TRUE + addtimer(CALLBACK(src, .proc/end_hostile_sit), 10 MINUTES) + return TRUE + +/datum/game_mode/gang/proc/end_hostile_sit() + SSshuttle.clearHostileEnvironment(src) + + +/datum/game_mode/gang/proc/check_tagged_turfs() + for(var/T in GLOB.gang_tags) + var/obj/effect/decal/cleanable/crayon/gang/tag = T + if(tag.my_gang) + tag.my_gang.adjust_points(50) + CHECK_TICK + +/datum/game_mode/gang/proc/check_gang_clothes() // TODO: make this grab the sprite itself, average out what the primary color would be, then compare how close it is to the gang color so I don't have to manually fill shit out for 5 years for every gang type + for(var/mob/living/carbon/human/H in GLOB.player_list) + if(!H.mind || !H.client) + continue + var/datum/antagonist/gang/is_gangster = H.mind.has_antag_datum(/datum/antagonist/gang) + for(var/clothing in list(H.head, H.wear_mask, H.wear_suit, H.w_uniform, H.back, H.gloves, H.shoes, H.belt, H.s_store, H.glasses, H.ears, H.wear_id)) + if(is_gangster) + if(is_type_in_list(clothing, is_gangster.acceptable_clothes)) + is_gangster.add_gang_points(10) + else + for(var/G in gangs) + var/datum/team/gang/gang_clothes = G + if(is_type_in_list(clothing, gang_clothes.acceptable_clothes)) + gang_clothes.adjust_points(5) + + CHECK_TICK + +/datum/game_mode/gang/proc/check_rollin_with_crews() + var/list/areas_to_check = list() + for(var/G in gangbangers) + var/datum/mind/gangster = G + areas_to_check += get_area(gangster.current) + for(var/AA in areas_to_check) + var/area/A = AA + var/list/gang_members = list() + for(var/mob/living/carbon/human/H in A) + if(H.stat || !H.mind || !H.client) + continue + var/datum/antagonist/gang/is_gangster = H.mind.has_antag_datum(/datum/antagonist/gang) + if(is_gangster) + gang_members[is_gangster.my_gang]++ + CHECK_TICK + if(gang_members.len) + for(var/datum/team/gang/gangsters in gang_members) + if(gang_members[gangsters] >= CREW_SIZE_MIN) + if(gang_members[gangsters] >= CREW_SIZE_MAX) + gangsters.adjust_points(5) // Discourage larger clumps, spread ur people out + else + gangsters.adjust_points(10) + + +/datum/game_mode/gang/generate_report() + return "Potential violent criminal activity has been detected on board your station, and we believe the Spinward Stellar Coalition may be conducting an audit of us. Keep an eye out for tagging of turf, color coordination, and suspicious people asking you to say things a little closer to their chest." + +/datum/game_mode/gang/send_intercept(report = 0) + return + +/datum/game_mode/gang/special_report() + var/list/report = list() + var/highest_point_value = 0 + var/highest_gang = "Leet Like Jeff K" + report += "The families in the round were:" + var/objective_failures = TRUE + for(var/datum/team/gang/GG in gangs) + if(GG.my_gang_datum.check_gang_objective()) + objective_failures = FALSE + break + for(var/datum/team/gang/G in gangs) + report += "[G.name]:" + if(G.members.len) + report += "[G.my_gang_datum.roundend_category] were:" + report += printplayerlist(G.members) + report += "Points: [G.points]" + report += "Objective: [G.my_gang_datum.gang_objective]" + if(G.my_gang_datum.check_gang_objective()) + report += "The family completed their objective!" + else + report += "The family failed their objective!" + else + report += "The family was wiped out!" + if(!objective_failures) + if(G.points >= highest_point_value && G.members.len && G.my_gang_datum.check_gang_objective()) + highest_point_value = G.points + highest_gang = G.name + else + if(G.points >= highest_point_value && G.members.len) + highest_point_value = G.points + highest_gang = G.name + var/alive_gangsters = 0 + var/alive_cops = 0 + for(var/datum/mind/gangbanger in gangbangers) + if(gangbanger.current) + if(!ishuman(gangbanger.current)) + continue + var/mob/living/carbon/human/H = gangbanger.current + if(H.stat) + continue + alive_gangsters++ + for(var/datum/mind/bacon in pigs) + if(bacon.current) + if(!ishuman(bacon.current)) // always returns false + continue + var/mob/living/carbon/human/H = bacon.current + if(H.stat) + continue + alive_cops++ + if(alive_gangsters > alive_cops) + if(!objective_failures) + report += "[highest_gang] won the round by completing their objective and having the most points!" + else + report += "[highest_gang] won the round by having the most points!" + else if(alive_gangsters == alive_cops) + report += "Legend has it the police and the families are still duking it out to this day!" + else + report += "The police put the boots to the families, medium style!" + + + return "
[report.Join("
")]
" diff --git a/code/game/gamemodes/gang/gang_things.dm b/code/game/gamemodes/gang/gang_things.dm new file mode 100644 index 00000000000..735196759e2 --- /dev/null +++ b/code/game/gamemodes/gang/gang_things.dm @@ -0,0 +1,53 @@ +/obj/item/gang_induction_package + name = "family signup package" + icon = 'icons/obj/gang/signup_points.dmi' + icon_state = "signup_book" + var/gang_to_use + var/datum/team/gang/team_to_use + + +/obj/item/gang_induction_package/attack_self(mob/living/user) + ..() + if(HAS_TRAIT(user, TRAIT_MINDSHIELD)) + to_chat(user, "You attended a seminar on not signing up for a gang, and are not interested.") + return + if(user.mind.has_antag_datum(/datum/antagonist/ert/families)) + to_chat(user, "As a police officer, you can't join this family. However, you pretend to accept it to keep your cover up.") + for(var/threads in team_to_use.free_clothes) + new threads(get_turf(user)) + qdel(src) + return + var/datum/antagonist/gang/is_gangster = user.mind.has_antag_datum(/datum/antagonist/gang) + if(is_gangster && is_gangster.starter_gangster) + to_chat(user, "You started your family. You can't turn your back on it now.") + return + attempt_join_gang(user) + +/obj/item/gang_induction_package/proc/add_to_gang(var/mob/living/user) + var/datum/game_mode/gang/F = SSticker.mode + var/datum/antagonist/gang/swappin_sides = new gang_to_use() + user.mind.add_antag_datum(swappin_sides) + swappin_sides.my_gang = team_to_use + team_to_use.add_member(user.mind) + for(var/threads in team_to_use.free_clothes) + new threads(get_turf(user)) + if (!F.gangbangers.Find(user.mind)) + F.gangbangers += user.mind + team_to_use.adjust_points(30) + + +/obj/item/gang_induction_package/proc/attempt_join_gang(mob/living/user) + if(user && user.mind) + var/datum/antagonist/gang/is_gangster = user.mind.has_antag_datum(/datum/antagonist/gang) + if(is_gangster) + if(is_gangster.my_gang == team_to_use) + return + else + is_gangster.my_gang.adjust_points(-30) + is_gangster.my_gang.remove_member(user.mind) + user.mind.remove_antag_datum(/datum/antagonist/gang) + add_to_gang(user) + qdel(src) + else + add_to_gang(user) + qdel(src) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 2f1ae980298..0dcafdeaba1 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -119,7 +119,7 @@ uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack/fireproof ears = /obj/item/radio/headset/syndicate/alt l_pocket = /obj/item/pinpointer/nuke/syndicate diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 3d0931d534b..7593e392fc8 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -4,7 +4,6 @@ icon_state = "floor_beaconf" name = "bluespace gigabeacon" desc = "A device that draws power from bluespace and creates a permanent tracking beacon." - level = 1 // underfloor layer = LOW_OBJ_LAYER use_power = IDLE_POWER_USE idle_power_usage = 0 @@ -16,27 +15,12 @@ Beacon = new(T) Beacon.invisibility = INVISIBILITY_MAXIMUM - hide(T.intact) + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) /obj/machinery/bluespace_beacon/Destroy() QDEL_NULL(Beacon) return ..() -// update the invisibility and icon -/obj/machinery/bluespace_beacon/hide(intact) - invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() - -// update the icon_state -/obj/machinery/bluespace_beacon/proc/updateicon() - var/state="floor_beacon" - - if(invisibility) - icon_state = "[state]f" - - else - icon_state = "[state]" - /obj/machinery/bluespace_beacon/process() if(!Beacon) var/turf/T = loc @@ -44,5 +28,3 @@ Beacon.invisibility = INVISIBILITY_MAXIMUM else if (Beacon.loc != loc) Beacon.forceMove(loc) - - updateicon() diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 684e2d5675c..0e08ce802b9 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -322,6 +322,14 @@ Class Procs: /obj/machinery/attack_robot(mob/user) if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE + if(Adjacent(user) && can_buckle && has_buckled_mobs()) //so that borgs (but not AIs, sadly (perhaps in a future PR?)) can unbuckle people from machines + if(buckled_mobs.len > 1) + var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in sortNames(buckled_mobs) + if(user_unbuckle_mob(unbuckled,user)) + return TRUE + else + if(user_unbuckle_mob(buckled_mobs[1],user)) + return TRUE return _try_interact(user) /obj/machinery/attack_ai(mob/user) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 05780c4e776..cdd69c318e7 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -48,24 +48,7 @@ ) /obj/machinery/autolathe/Initialize() - var/static/list/allowed_types = list( - /datum/material/iron, - /datum/material/glass, - /datum/material/gold, - /datum/material/silver, - /datum/material/diamond, - /datum/material/uranium, - /datum/material/plasma, - /datum/material/bluespace, - /datum/material/bananium, - /datum/material/titanium, - /datum/material/runite, - /datum/material/plastic, - /datum/material/adamantine, - /datum/material/mythril, - /datum/material/wood, - ) - AddComponent(/datum/component/material_container, allowed_types, _show_on_examine=TRUE, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert)) + AddComponent(/datum/component/material_container, SSmaterials.materialtypes_by_category[MAT_CATEGORY_RIGID], 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) . = ..() wires = new /datum/wires/autolathe(src) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 81fa9ce15cc..c75ed084a09 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -3,8 +3,8 @@ desc = "A machine used to deposit and withdraw station funds." icon = 'goon/icons/obj/goon_terminals.dmi' idle_power_usage = 100 - ui_x = 320 - ui_y = 165 + ui_x = 335 + ui_y = 160 var/siphoning = FALSE var/next_warning = 0 var/obj/item/radio/radio diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index ab80310982d..549dc40e7c1 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -42,12 +42,11 @@ . += icon_keyboard // This whole block lets screens ignore lighting and be visible even in the darkest room - // We can't do this for many things that emit light unfortunately because it layers over things that would be on top of it var/overlay_state = icon_screen if(machine_stat & BROKEN) overlay_state = "[icon_state]_broken" SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir) - SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128) + SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, EMISSIVE_PLANE, dir) /obj/machinery/computer/power_change() . = ..() diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index ae38806aaec..6ffef5fb5db 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -2,12 +2,16 @@ name = "\improper AI system integrity restorer" desc = "Used with intelliCards containing nonfunctional AIs to restore them to working order." req_access = list(ACCESS_CAPTAIN, ACCESS_ROBOTICS, ACCESS_HEADS) - var/mob/living/silicon/ai/occupier = null - var/active = 0 circuit = /obj/item/circuitboard/computer/aifixer icon_keyboard = "tech_key" icon_screen = "ai-fixer" light_color = LIGHT_COLOR_PINK + ui_x = 370 + ui_y = 360 + /// Variable containing transferred AI + var/mob/living/silicon/ai/occupier + /// Variable dictating if we are in the process of restoring the occupier AI + var/restoring = FALSE /obj/machinery/computer/aifixer/screwdriver_act(mob/living/user, obj/item/I) if(occupier) @@ -18,60 +22,45 @@ else return ..() -/obj/machinery/computer/aifixer/ui_interact(mob/user) - . = ..() - - var/dat = "" - - if (src.occupier) - var/laws - dat += "

Stored AI: [src.occupier.name]

" - dat += "System integrity: [(src.occupier.health+100)/2]%
" - - if (src.occupier.laws.zeroth) - laws += "0: [src.occupier.laws.zeroth]
" - - for (var/index = 1, index <= src.occupier.laws.hacked.len, index++) - var/law = src.occupier.laws.hacked[index] - if (length(law) > 0) - var/num = ionnum() - laws += "[num]: [law]
" - - for (var/index = 1, index <= src.occupier.laws.ion.len, index++) - var/law = src.occupier.laws.ion[index] - if (length(law) > 0) - var/num = ionnum() - laws += "[num]: [law]
" - - var/number = 1 - for (var/index = 1, index <= src.occupier.laws.inherent.len, index++) - var/law = src.occupier.laws.inherent[index] - if (length(law) > 0) - laws += "[number]: [law]
" - number++ - - for (var/index = 1, index <= src.occupier.laws.supplied.len, index++) - var/law = src.occupier.laws.supplied[index] - if (length(law) > 0) - laws += "[number]: [law]
" - number++ +/obj/machinery/computer/aifixer/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) + if(!ui) + ui = new(user, src, ui_key, "ai_restorer", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/computer/aifixer/ui_data(mob/user) + var/list/data = list() + + data["ejectable"] = FALSE + data["AI_present"] = FALSE + data["error"] = null + if(!occupier) + data["error"] = "Please transfer an AI unit." + else + data["AI_present"] = TRUE + data["name"] = occupier.name + data["restoring"] = restoring + data["health"] = (occupier.health + 100) / 2 + data["isDead"] = occupier.stat == DEAD + data["laws"] = occupier.laws.get_law_list(include_zeroth = 1) - dat += "Laws:
[laws]
" + return data - if (src.occupier.stat == DEAD) - dat += "AI non-functional" - else - dat += "AI functional" - if (!src.active) - dat += {"

Begin Reconstruction"} - else - dat += "

Reconstruction in process, please wait.
" - dat += {"
Close"} - var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return +/obj/machinery/computer/aifixer/ui_act(action, params) + if(..()) + return + if(!occupier) + restoring = FALSE + + switch(action) + if("PRG_beginReconstruction") + if(occupier?.health < 100) + to_chat(usr, "Reconstruction in progress. This will take several minutes.") + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE) + restoring = TRUE + occupier.notify_ghost_cloning("Your core files are being restored!", source = src) + . = TRUE /obj/machinery/computer/aifixer/proc/Fix() use_power(1000) @@ -89,38 +78,24 @@ /obj/machinery/computer/aifixer/process() if(..()) - if(active) + if(restoring) var/oldstat = occupier.stat - active = Fix() + restoring = Fix() if(oldstat != occupier.stat) update_icon() - updateDialog() - -/obj/machinery/computer/aifixer/Topic(href, href_list) - if(..()) - return - if(href_list["fix"]) - to_chat(usr, "Reconstruction in progress. This will take several minutes.") - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE) - active = TRUE - if(occupier) - var/mob/living/silicon/ai/A = occupier - A.notify_ghost_cloning("Your core files are being restored!", source = src) - add_fingerprint(usr) - updateUsrDialog() /obj/machinery/computer/aifixer/update_overlays() . = ..() if(machine_stat & (NOPOWER|BROKEN)) return - if(active) + if(restoring) . += "ai-fixer-on" if (occupier) switch (occupier.stat) - if (0) + if (CONSCIOUS) . += "ai-fixer-full" - if (2) + if (UNCONSCIOUS) . += "ai-fixer-404" else . += "ai-fixer-empty" @@ -143,14 +118,14 @@ update_icon() else //Uploading AI from terminal to card - if(occupier && !active) + if(occupier && !restoring) to_chat(occupier, "You have been downloaded to a mobile storage device. Still no remote access.") to_chat(user, "Transfer successful: [occupier.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.") occupier.forceMove(card) card.AI = occupier occupier = null update_icon() - else if (active) + else if (restoring) to_chat(user, "ERROR: Reconstruction in progress.") else if (!occupier) to_chat(user, "ERROR: Unable to locate artificial intelligence.") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 3dc7dc9787c..5b54bdbe186 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -30,6 +30,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/coin/antagtoken = 2, /obj/item/stack/tile/fakespace/loaded = 2, /obj/item/stack/tile/fakepit/loaded = 2, + /obj/item/stack/tile/eighties/loaded = 2, /obj/item/toy/toy_xeno = 2, /obj/item/storage/box/actionfigure = 1, /obj/item/restraints/handcuffs/fake = 2, @@ -46,6 +47,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/clothing/shoes/wheelys = 2, /obj/item/clothing/shoes/kindleKicks = 2, /obj/item/toy/plush/goatplushie/angry/realgoat = 2, + /obj/item/toy/plush/moth = 2, /obj/item/storage/belt/military/snack = 2, /obj/item/toy/brokenradio = 2, /obj/item/toy/braintoy = 2, @@ -77,22 +79,28 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return INITIALIZE_HINT_QDEL Reset() -/obj/machinery/computer/arcade/proc/prizevend(mob/user) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) - if(prob(0.0001)) //1 in a million - new /obj/item/gun/energy/pulse/prize(src) - visible_message("[src] dispenses.. woah, a gun! Way past cool.", "You hear a chime and a shot.") - user.client.give_award(/datum/award/achievement/misc/pulse, user) - return +/obj/machinery/computer/arcade/proc/prizevend(mob/user, prizes = 1) + if(user.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && HAS_TRAIT(user, TRAIT_GAMERGOD)) + visible_message("[user] inputs an intense cheat code!",\ + "You hear a flurry of buttons being pressed.") + say("CODE ACTIVATED: EXTRA PRIZES.") + prizes *= 2 + for(var/i = 0, i < prizes, i++) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) + if(prob(0.0001)) //1 in a million + new /obj/item/gun/energy/pulse/prize(src) + visible_message("[src] dispenses.. woah, a gun! Way past cool.", "You hear a chime and a shot.") + user.client.give_award(/datum/award/achievement/misc/pulse, user) + return - var/prizeselect - if(prize_override) - prizeselect = pickweight(prize_override) - else - prizeselect = pickweight(GLOB.arcade_prize_pool) - var/atom/movable/the_prize = new prizeselect(get_turf(src)) - playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) - visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") + var/prizeselect + if(prize_override) + prizeselect = pickweight(prize_override) + else + prizeselect = pickweight(GLOB.arcade_prize_pool) + var/atom/movable/the_prize = new prizeselect(get_turf(src)) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) + visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") /obj/machinery/computer/arcade/emp_act(severity) . = ..() @@ -206,9 +214,11 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return if (!blocked && !gameover) + var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) if (href_list["attack"]) blocked = TRUE - var/attackamt = rand(2,6) + var/attackamt = rand(2,6) + rand(0, gamerSkill) var/weapon = pick(weapons) temp = "You attack with a [weapon] for [attackamt] damage!" playsound(loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -222,8 +232,11 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if (href_list["heal"]) blocked = TRUE - var/pointamt = rand(1,3) - var/healamt = rand(6,8) + var/maxPointCost = 3 + if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN) + maxPointCost = 2 + var/pointamt = rand(1, maxPointCost) + var/healamt = rand(6,8) + rand(0, gamerSkill) temp = "You use [pointamt] magic to heal for [healamt] damage!" playsound(loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10) updateUsrDialog() @@ -238,7 +251,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if (href_list["charge"]) blocked = TRUE - var/chargeamt = rand(4,7) + var/chargeamt = rand(4,7) + rand(0, gamerSkill) temp = "You regain [chargeamt] points." playsound(loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10) player_mp += chargeamt @@ -271,6 +284,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return /obj/machinery/computer/arcade/battle/proc/arcade_action(mob/user) + var/xp_gained = 0 if ((enemy_mp <= 0) || (enemy_hp <= 0)) if(!gameover) gameover = TRUE @@ -284,8 +298,10 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() obj_flags &= ~EMAGGED + xp_gained += 100 else prizevend(user) + xp_gained += 50 SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal"))) @@ -327,10 +343,12 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( gameover = TRUE temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3, falloff = 10) + xp_gained += 10//pity points if(obj_flags & EMAGGED) usr.gib() SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) + user?.mind?.adjust_experience(/datum/skill/gaming, xp_gained+1)//always gain at least 1 point of XP blocked = FALSE return @@ -512,6 +530,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( gamers[gamer] = -1 gamer.client.give_award(/datum/award/achievement/misc/gamer, gamer) // PSYCH REPORT NOTE: patient kept rambling about how they did it for an "achievement", recommend continued holding for observation + gamer.mind?.adjust_experience(/datum/skill/gaming, 50) // cheevos make u better if(!isnull(GLOB.data_core.general)) for(var/datum/data/record/R in GLOB.data_core.general) @@ -553,6 +572,8 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( desc = "Learn how our ancestors got to Orion, and have fun in the process!" dat += "

May They Rest In Peace

" + user?.mind?.adjust_experience(/datum/skill/gaming, 10)//learning from your mistakes is the first rule of roguelikes + else if(event) dat = eventdat else if(gameStatus == ORION_STATUS_NORMAL) @@ -592,20 +613,25 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return busy = TRUE + var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_PROBS_MODIFIER) + var/gamerSkillRands = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) + var/xp_gained = 0 if (href_list["continue"]) //Continue your travels if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) if(turns >= ORION_TRAIL_WINTURN) win(usr) + xp_gained += 34 else food -= (alive+lings_aboard)*2 fuel -= 5 - if(turns == 2 && prob(30)) + if(turns == 2 && prob(30-gamerSkill)) event = ORION_TRAIL_COLLISION event() - else if(prob(75)) + else if(prob(75-gamerSkill)) event = pickweight(events) if(lings_aboard) - if(event == ORION_TRAIL_LING || prob(55)) + if(event == ORION_TRAIL_LING || prob(55-gamerSkill)) event = ORION_TRAIL_LING_ATTACK event() turns += 1 @@ -613,7 +639,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/mob/living/carbon/M = usr //for some vars switch(event) if(ORION_TRAIL_RAIDERS) - if(prob(50)) + if(prob(50-gamerSkill)) to_chat(usr, "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?") M.hallucination += 30 else @@ -621,7 +647,10 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( M.take_bodypart_damage(30) playsound(loc, 'sound/weapons/genhit2.ogg', 100, TRUE) if(ORION_TRAIL_ILLNESS) - var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS + var/maxSeverity = 3 + if(gamerSkillLevel >= SKILL_LEVEL_EXPERT) + maxSeverity = 2 //part of gitting gud is rng mitigation + var/severity = rand(1,maxSeverity) //pray to RNGesus. PRAY, PIGS if(severity == 1) to_chat(M, "You suddenly feel slightly nauseated." ) if(severity == 2) @@ -633,7 +662,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( sleep(30) M.vomit(10, distance = 5) if(ORION_TRAIL_FLUX) - if(prob(75)) + if(prob(75-gamerSkill)) M.Paralyze(60) say("A sudden gust of powerful wind slams [M] into the floor!") M.take_bodypart_damage(25) @@ -641,7 +670,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else to_chat(M, "A violent gale blows past you, and you barely manage to stay standing!") if(ORION_TRAIL_COLLISION) //by far the most damaging event - if(prob(90)) + if(prob(90-gamerSkill)) playsound(loc, 'sound/effects/bang.ogg', 100, TRUE) var/turf/open/floor/F for(F in orange(1, src)) @@ -724,7 +753,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( event = null else if(href_list["blackhole"]) //keep speed past a black hole if(turns == 7) - if(prob(75)) + if(prob(75-gamerSkill)) event = ORION_TRAIL_BLACKHOLE event() if(obj_flags & EMAGGED) @@ -805,25 +834,26 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if(href_list["raid_spaceport"]) if(gameStatus == ORION_STATUS_MARKET) if(!spaceport_raided) - var/success = min(15 * alive,100) //default crew (4) have a 60% chance + var/success = min(15 * alive + gamerSkill,100) //default crew (4) have a 60% chance spaceport_raided = 1 var/FU = 0 - var/FOO = 0 + var/FO = 0 if(prob(success)) - FU = rand(5,15) - FOO = rand(5,15) - last_spaceport_action = "You successfully raided the spaceport! You gained [FU] Fuel and [FOO] Food! (+[FU]FU,+[FOO]FOO)" + FU = rand(5 + gamerSkillRands,15 + gamerSkillRands) + FO = rand(5 + gamerSkillRands,15 + gamerSkillRands) + last_spaceport_action = "You successfully raided the spaceport! You gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" + xp_gained += 10 else FU = rand(-5,-15) - FOO = rand(-5,-15) - last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FOO*-1] Food in your scramble to escape! ([FU]FU,[FOO]FOO)" + FO = rand(-5,-15) + last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)" //your chance of lose a crewmember is 1/2 your chance of success //this makes higher % failures hurt more, don't get cocky space cowboy! if(prob(success*5)) var/lost_crew = remove_crewmember() - last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FOO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FOO]FOO,-Crew)" + last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" if(obj_flags & EMAGGED) say("WEEWOO! WEEWOO! Spaceport security en route!") playsound(src, 'sound/items/weeoo1.ogg', 100, FALSE) @@ -833,7 +863,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( fuel += FU - food += FOO + food += FO event() else if(href_list["buyparts"]) @@ -872,7 +902,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( add_fingerprint(usr) updateUsrDialog() busy = FALSE - return + usr?.mind?.adjust_experience(/datum/skill/gaming, xp_gained+1) /obj/machinery/computer/arcade/orion_trail/proc/event() @@ -1063,7 +1093,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else eventdat += "Your jump into the sector yields a spaceport - a lucky find!" eventdat += "
This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." - eventdat += "
Trading terms: FU = Fuel, FOO = Food" + eventdat += "
Trading terms: FU = Fuel, FO = Food" if(last_spaceport_action) eventdat += "
Last action: [last_spaceport_action]" eventdat += "

Crew:

" @@ -1076,22 +1106,22 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( if(!spaceport_freebie && (fuel < 20 || food < 20)) spaceport_freebie++ var/FU = 10 - var/FOO = 10 + var/FO = 10 var/freecrew = 0 if(prob(30)) FU = 25 - FOO = 25 + FO = 25 if(prob(10)) add_crewmember() freecrew++ - eventdat += "
The traders of the spaceport take pity on you, and generously give you some free supplies! (+[FU]FU, +[FOO]FOO)" + eventdat += "
The traders of the spaceport take pity on you, and generously give you some free supplies! (+[FU]FU, +[FO]FO)" if(freecrew) eventdat += "
You also gain a new crewmember!" fuel += FU - food += FOO + food += FO //CREW INTERACTIONS eventdat += "

Crew Management:

" @@ -1273,9 +1303,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/obj/item/bodypart/chopchop = c_user.get_bodypart(which_hand) chopchop.dismember() qdel(chopchop) + user.mind?.adjust_experience(/datum/skill/gaming, 100) playsound(loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10) - for(var/i=1; i<=rand(3,5); i++) - prizevend(user) + prizevend(user, rand(3,5)) else to_chat(c_user, "You (wisely) decide against putting your hand in the machine.") diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index c865633cbe9..c81bc8f8977 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -5,143 +5,176 @@ icon_keyboard = "security_key" circuit = /obj/item/circuitboard/computer/security light_color = LIGHT_COLOR_RED + ui_x = 870 + ui_y = 708 - var/last_pic = 1 var/list/network = list("ss13") - var/list/watchers = list() //who's using the console, associated with the camera they're on. - var/long_ranged = FALSE + var/obj/machinery/camera/active_camera + var/list/concurrent_users = list() + + // Stuff needed to render the map + var/map_name + var/const/default_map_size = 15 + var/obj/screen/cam_screen + var/obj/screen/plane_master/lighting/cam_plane_master + var/obj/screen/background/cam_background /obj/machinery/computer/security/Initialize() . = ..() + // Map name has to start and end with an A-Z character, + // and definitely NOT with a square bracket or even a number. + // I wasted 6 hours on this. :agony: + map_name = "camera_console_[REF(src)]_map" + // Convert networks to lowercase for(var/i in network) network -= i network += lowertext(i) + // Initialize map objects + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = FALSE + cam_screen.screen_loc = "[map_name]:1,1" + cam_plane_master = new + cam_plane_master.name = "plane_master" + cam_plane_master.assigned_map = map_name + cam_plane_master.del_on_map_removal = FALSE + cam_plane_master.screen_loc = "[map_name]:CENTER" + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = FALSE + +/obj/machinery/computer/security/Destroy() + qdel(cam_screen) + qdel(cam_plane_master) + qdel(cam_background) + return ..() /obj/machinery/computer/security/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) for(var/i in network) network -= i network += "[idnum][i]" -/obj/machinery/computer/security/check_eye(mob/user) - if( (machine_stat & (NOPOWER|BROKEN)) || user.incapacitated() || user.is_blind() ) - user.unset_machine() - return - if(!(user in watchers)) - user.unset_machine() - return - if(!watchers[user]) - user.unset_machine() - return - var/obj/machinery/camera/C = watchers[user] - if(!C.can_use()) - user.unset_machine() - return - if(iscyborg(user) || long_ranged) - var/list/viewing = viewers(src) - if(!viewing.Find(user)) - user.unset_machine() - return - if(!issilicon(user) && !Adjacent(user)) - user.unset_machine() - return - -/obj/machinery/computer/security/on_unset_machine(mob/user) - watchers.Remove(user) - user.reset_perspective(null) - -/obj/machinery/computer/security/Destroy() - if(watchers.len) - for(var/mob/M in watchers) - M.unset_machine() //to properly reset the view of the users if the console is deleted. - return ..() +/obj/machinery/computer/security/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) + // Update UI + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + // Show static if can't use the camera + if(!active_camera?.can_use()) + show_camera_static() + if(!ui) + var/user_ref = REF(user) + var/is_living = isliving(user) + // Ghosts shouldn't count towards concurrent users, which produces + // an audible terminal_on click. + if(is_living) + concurrent_users += user_ref + // Turn on the console + if(length(concurrent_users) == 1 && is_living) + playsound(src, 'sound/machines/terminal_on.ogg', 25, FALSE) + use_power(active_power_usage) + // Register map objects + user.client.register_map_obj(cam_screen) + user.client.register_map_obj(cam_plane_master) + user.client.register_map_obj(cam_background) + // Open UI + ui = new(user, src, ui_key, "camera_console", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/computer/security/ui_data() + var/list/data = list() + data["network"] = network + data["activeCamera"] = null + if(active_camera) + if(!active_camera?.can_use()) + data["activeCamera"] = list( + name = active_camera.c_tag + " (DEACTIVATED)", + status = active_camera.status, + ) + else + data["activeCamera"] = list( + name = active_camera.c_tag, + status = active_camera.status, + ) + return data + +/obj/machinery/computer/security/ui_static_data() + var/list/data = list() + data["mapRef"] = map_name + var/list/cameras = get_available_cameras() + data["cameras"] = list() + for(var/i in cameras) + var/obj/machinery/camera/C = cameras[i] + if(!C?.can_use()) + data["cameras"] += list(list( + name = C.c_tag + " (DEACTIVATED)", + )) + else + data["cameras"] += list(list( + name = C.c_tag, + )) + return data -/obj/machinery/computer/security/interact(mob/user) - if (machine_stat) - return - if (ismob(user) && !isliving(user)) // ghosts don't need cameras - return - if (!network) - user.unset_machine() - CRASH("No camera network") - if (!(islist(network))) - user.unset_machine() - CRASH("Camera network is not a list") - if(..()) - user.unset_machine() +/obj/machinery/computer/security/ui_act(action, params) + . = ..() + if(.) return - var/list/camera_list = get_available_cameras() - if(!(user in watchers)) - for(var/Num in camera_list) - var/obj/machinery/camera/CAM = camera_list[Num] - if(istype(CAM)) - if(CAM.can_use()) - watchers[user] = CAM //let's give the user the first usable camera, and then let him change to the camera he wants. - break - if(!(user in watchers)) - user.unset_machine() // no usable camera on the network, we disconnect the user from the computer. - return - playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) - use_camera_console(user) - -/obj/machinery/computer/security/proc/use_camera_console(mob/user) - var/list/camera_list = get_available_cameras() - var/t = input(user, "Which camera should you change to?") as null|anything in camera_list - if(user.machine != src) //while we were choosing we got disconnected from our computer or are using another machine. - return - if(!t) - user.unset_machine() + if(action == "switch_camera") + var/c_tag = params["name"] + var/list/cameras = get_available_cameras() + var/obj/machinery/camera/C = cameras[c_tag] + active_camera = C + playsound(src, get_sfx("terminal_type"), 25, FALSE) + + // Show static if can't use the camera + if(!active_camera?.can_use()) + show_camera_static() + return TRUE + + var/list/visible_turfs = list() + for(var/turf/T in (C.isXRay() \ + ? range(C.view_range, C) \ + : view(C.view_range, C))) + visible_turfs += T + + var/list/bbox = get_bbox_of_atoms(visible_turfs) + var/size_x = bbox[3] - bbox[1] + 1 + var/size_y = bbox[4] - bbox[2] + 1 + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, size_x, size_y) + + return TRUE + +/obj/machinery/computer/security/ui_close(mob/user) + var/user_ref = REF(user) + var/is_living = isliving(user) + // Living creature or not, we remove you anyway. + concurrent_users -= user_ref + // Unregister map objects + user.client.clear_map(map_name) + // Turn off the console + if(length(concurrent_users) == 0 && is_living) + active_camera = null playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE) - return + use_power(0) - var/obj/machinery/camera/C = camera_list[t] +/obj/machinery/computer/security/proc/show_camera_static() + cam_screen.vis_contents.Cut() + cam_background.icon_state = "scanline2" + cam_background.fill_rect(1, 1, default_map_size, default_map_size) - if(t == "Cancel") - user.unset_machine() - playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE) - return - if(C) - var/camera_fail = 0 - if(!C.can_use() || user.machine != src || user.is_blind() || user.incapacitated()) - camera_fail = 1 - else if(iscyborg(user) || long_ranged) - var/list/viewing = viewers(src) - if(!viewing.Find(user)) - camera_fail = 1 - else if(!issilicon(user) && !Adjacent(user)) - camera_fail = 1 - - if(camera_fail) - user.unset_machine() - return 0 - - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE) - if(isAI(user)) - var/mob/living/silicon/ai/A = user - A.eyeobj.setLoc(get_turf(C)) - A.client.eye = A.eyeobj - else - user.reset_perspective(C) - user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static) - user.clear_fullscreen("flash", 5) - watchers[user] = C - use_power(50) - addtimer(CALLBACK(src, .proc/use_camera_console, user), 5) - else - user.unset_machine() - -//returns the list of cameras accessible from this computer +// Returns the list of cameras accessible from this computer /obj/machinery/computer/security/proc/get_available_cameras() var/list/L = list() for (var/obj/machinery/camera/C in GLOB.cameranet.cameras) if((is_away_level(z) || is_away_level(C.z)) && (C.z != z))//if on away mission, can only receive feed from same z_level cameras continue L.Add(C) - - camera_sort(L) - var/list/D = list() - D["Cancel"] = "Cancel" for(var/obj/machinery/camera/C in L) if(!C.network) stack_trace("Camera in a cameranet has no camera network") @@ -149,9 +182,9 @@ if(!(islist(C.network))) stack_trace("Camera in a cameranet has a non-list camera network") continue - var/list/tempnetwork = C.network&network + var/list/tempnetwork = C.network & network if(tempnetwork.len) - D["[C.c_tag][(C.status ? null : " (Deactivated)")]"] = C + D["[C.c_tag]"] = C return D // SECURITY MONITORS @@ -222,7 +255,6 @@ network = list("thunder") density = FALSE circuit = null - long_ranged = TRUE interaction_flags_atom = NONE // interact() is called by BigClick() var/icon_state_off = "entertainment_blank" var/icon_state_on = "entertainment" diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 544f4aa6898..6210631d2b1 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -36,7 +36,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) "Research Director", "Chief Medical Officer", "Brig Physician", - "Lieutenant") + "Lieutenant", + "Prisoner") //The scaling factor of max total positions in relation to the total amount of people on board the station in % var/max_relative_positions = 30 //30%: Seems reasonable, limit of 6 @ 20 players diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 02cb0af50e9..af77d329b4e 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -183,7 +183,7 @@ if("callshuttle") state = STATE_DEFAULT - if(authenticated) + if(authenticated && SSshuttle.canEvac(usr)) state = STATE_CALLSHUTTLE if("callshuttle2") if(authenticated) @@ -336,7 +336,9 @@ aicurrmsg = null aistate = STATE_DEFAULT if("ai-callshuttle") - aistate = STATE_CALLSHUTTLE + aistate = STATE_DEFAULT + if(SSshuttle.canEvac(usr)) + aistate = STATE_CALLSHUTTLE if("ai-callshuttle2") SSshuttle.requestEvac(usr, href_list["call"]) aistate = STATE_DEFAULT diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 60d3a56afe2..87db32b9a91 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -62,6 +62,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) jobs["Mime"] = 67 jobs["Janitor"] = 68 jobs["Lawyer"] = 69 + jobs["Psychologist"] = 70 jobs["Admiral"] = 200 jobs["CentCom Commander"] = 210 jobs["Custodian"] = 211 diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 0a15070c4cc..0535ea8aa34 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -86,13 +86,18 @@ if(A.used) to_chat(user,"Recycled [I].") if(A.research) - var/c_typepath = generate_chromosome() - var/obj/item/chromosome/CM = new c_typepath (drop_location()) - to_chat(user,"Recycled [I].") - if((LAZYLEN(stored_chromosomes) < max_chromosomes) && prob(60)) - CM.forceMove(src) - stored_chromosomes += CM - to_chat(user,"[capitalize(CM.name)] added to storage.") + if(prob(60)) + var/c_typepath = generate_chromosome() + var/obj/item/chromosome/CM = new c_typepath (drop_location()) + if(LAZYLEN(stored_chromosomes) < max_chromosomes) + CM.forceMove(src) + stored_chromosomes += CM + to_chat(user,"[capitalize(CM.name)] added to storage.") + else + to_chat(user, "You cannot store any more chromosomes!") + to_chat(user, "[capitalize(CM.name)] added on top of the console.") + else + to_chat(user, "There was not enough genetic data to extract a viable chromosome.") qdel(I) return @@ -514,6 +519,8 @@ if(HM.chromosome_name) chromosome_name = HM.chromosome_name temp_html += "
Chromosome status: [chromosome_name]
" + temp_html += "
Compatible chromosomes: [jointext(HM.valid_chrom_list, ", ")]
" + temp_html += "
Sequence:

" if(!scrambled) for(var/block in 1 to A.blocks) @@ -523,7 +530,10 @@ for(var/i in 1 to DNA_SEQUENCE_LENGTH) var/num = 1+(i-1)*2 var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1)) - temp_html += "" + if(sequence[num] == "X") + temp_html += "" + else + temp_html += "" temp_html += "" for(var/i in 1 to DNA_SEQUENCE_LENGTH) temp_html += "
|
" @@ -531,7 +541,11 @@ for(var/i in 1 to DNA_SEQUENCE_LENGTH) var/num = i*2 var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1)) - temp_html += "" + + if(sequence[num] == "X") + temp_html += "" + else + temp_html += "" temp_html += "" temp_html += "




" else @@ -870,13 +884,13 @@ else to_chat(usr, "Not enough space to store potential mutation.") if("ejectchromosome") - if(LAZYLEN(stored_chromosomes) <= num) + if(LAZYLEN(stored_chromosomes) >= num) var/obj/item/chromosome/CM = stored_chromosomes[num] CM.forceMove(drop_location()) adjust_item_drop_location(CM) stored_chromosomes -= CM if("applychromosome") - if(viable_occupant && (LAZYLEN(viable_occupant.dna.mutations) <= num)) + if(viable_occupant && (LAZYLEN(viable_occupant.dna.mutations) >= num)) var/datum/mutation/human/HM = viable_occupant.dna.mutations[num] var/list/chromosomes = list() for(var/obj/item/chromosome/CM in stored_chromosomes) @@ -913,7 +927,7 @@ var/datum/mutation/human/HM = B if(HM.type == mutation) true_selection -= HM - break + break if("remove_advinjector") var/selection = href_list["injector"] diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 056b2a513de..917d6f9f7af 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -6,167 +6,122 @@ req_access = list(ACCESS_ROBOTICS) circuit = /obj/item/circuitboard/computer/robotics light_color = LIGHT_COLOR_PINK - var/temp = null - + ui_x = 500 + ui_y = 460 /obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R) . = FALSE if(!istype(R)) return if(isAI(user)) - if (R.connected_ai != user) + if(R.connected_ai != user) return if(iscyborg(user)) - if (R != user) + if(R != user) return if(R.scrambledcodes) return return TRUE -/obj/machinery/computer/robotics/ui_interact(mob/user) - . = ..() - user.set_machine(src) - var/dat - var/list/robo_list = list() - var/robot_count +/obj/machinery/computer/robotics/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) + if(!ui) + ui = new(user, src, ui_key, "robotics_control_console", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/computer/robotics/ui_data(mob/user) + var/list/data = list() + + data["can_hack"] = FALSE + if(issilicon(user)) + var/mob/living/silicon/S = user + if(S.hack_software) + data["can_hack"] = TRUE + else if(IsAdminGhost(user)) + data["can_hack"] = TRUE + + data["cyborgs"] = list() for(var/mob/living/silicon/robot/R in GLOB.silicon_mobs) if(!can_control(user, R)) continue if(z != (get_turf(R)).z) continue - robot_count++ - var/unit_sync = "Independent" - if(R.connected_ai) - unit_sync = "Slaved to [R.connected_ai]" - if(!robo_list[unit_sync]) - robo_list[unit_sync] = list() - robo_list[unit_sync] += R - - dat += "

Cyborgs


" - if(!robo_list.len) - dat += "
No cyborg units detected within access parameters.


" - else - if(robo_list.len > 1) - sortTim(robo_list, /proc/cmp_text_asc) - for(var/ai_unit in robo_list) - dat += "

[ai_unit]

" - var/spacer - for(var/robo in robo_list[ai_unit]) - if(spacer) - dat += "

" - else - spacer = TRUE - var/mob/living/silicon/robot/R = robo - dat += "Name: [R.name]
" - var/can_move = (R.mobility_flags & MOBILITY_MOVE) - dat += "Status: [R.stat ? "Not Responding" : (can_move ? "Normal" : "Locked Down")]
" - - if(can_move) - dat += "Cell: [R.cell ? "[R.cell.percent()]%" : "No Cell Detected"]
" - - dat += "Module: [R.module ? "[R.module.name] Module" : "No Module Detected"]
" - dat += "Unit Controls: " - if(issilicon(user) && user != R) - var/mob/living/silicon/S = user - if(S.hack_software && !R.emagged) - dat += "(Hack) " - else if(IsAdminGhost(user) && !R.emagged) - dat += "(Hack) " - dat += "([(R.mobility_flags & MOBILITY_MOVE) ? "Lockdown" : "Release"]) " - dat += "(Destroy)" - dat += "
" - - dat += "

Drones

" - var/drones = 0 + var/list/cyborg_data = list( + name = R.name, + locked_down = R.lockcharge, + status = R.stat, + charge = R.cell ? round(R.cell.percent()) : null, + module = R.module ? "[R.module.name] Module" : "No Module Detected", + synchronization = R.connected_ai, + emagged = R.emagged, + ref = REF(R) + ) + data["cyborgs"] += list(cyborg_data) + + data["drones"] = list() for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) if(D.hacked) continue if(z != (get_turf(D)).z) continue - if(drones) - dat += "

" - else - dat += "
" - drones++ - dat += "Name: [D.name]
" - dat += "Status: [D.stat ? "Not Responding" : "Normal"]
" - dat += "Unit Controls: " - dat += "(Destroy)" - - if(drones) - dat += "
" - else - dat += "
No drone units detected within access parameters.
" + var/list/drone_data = list( + name = D.name, + status = D.stat, + ref = REF(D) + ) + data["drones"] += list(drone_data) - var/window_height = min((300+((robot_count+drones) * 110)), 800) + return data - var/datum/browser/popup = new(user, "computer", "Robotics Control Console", 375, window_height) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) - popup.open() - -/obj/machinery/computer/robotics/Topic(href, href_list) - . = ..() - if(.) +/obj/machinery/computer/robotics/ui_act(action, params) + if(..()) return - if (href_list["temp"]) - temp = null - - else if (href_list["killbot"]) - if(allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs - if(can_control(usr, R)) - var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm" && can_control(usr, R) && !..()) + switch(action) + if("killbot") + if(allowed(usr)) + var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs + if(can_control(usr, R) && !..()) var/turf/T = get_turf(R) message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!") log_game("\[key_name(usr)] detonated [key_name(R)]!") if(R.connected_ai) to_chat(R.connected_ai, "

ALERT - Cyborg detonation detected: [R.name]
") R.self_destruct() - else - to_chat(usr, "Access Denied.") - - else if (href_list["stopbot"]) - if(allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs - if(can_control(usr, R)) - var/choice = input("Are you certain you wish to [!R.lockcharge ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm" && can_control(usr, R) && !..()) + else + to_chat(usr, "Access Denied.") + if("stopbot") + if(allowed(usr)) + var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs + if(can_control(usr, R) && !..()) message_admins("[ADMIN_LOOKUPFLW(usr)] [!R.lockcharge ? "locked down" : "released"] [ADMIN_LOOKUPFLW(R)]!") log_game("[key_name(usr)] [!R.lockcharge ? "locked down" : "released"] [key_name(R)]!") R.SetLockdown(!R.lockcharge) to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") if(R.connected_ai) to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
") - - else - to_chat(usr, "Access Denied.") - - else if (href_list["magbot"]) - var/mob/living/silicon/S = usr - if((istype(S) && S.hack_software) || IsAdminGhost(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs - if(istype(R) && !R.emagged && (R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) - log_game("[key_name(usr)] emagged [key_name(R)] using robotic console!") - message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") - R.SetEmagged(TRUE) - - else if (href_list["killdrone"]) - if(allowed(usr)) - var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list - if(D.hacked) - to_chat(usr, "ERROR: [D] is not responding to external commands.") else - var/turf/T = get_turf(D) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") - log_game("[key_name(usr)] detonated [key_name(D)]!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, TRUE, D) - s.start() - D.visible_message("\the [D] self destructs!") - D.gib() - - - updateUsrDialog() + to_chat(usr, "Access Denied.") + if("magbot") + var/mob/living/silicon/S = usr + if((istype(S) && S.hack_software) || IsAdminGhost(usr)) + var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs + if(istype(R) && !R.emagged && (R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) + log_game("[key_name(usr)] emagged [key_name(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + R.SetEmagged(TRUE) + if("killdrone") + if(allowed(usr)) + var/mob/living/simple_animal/drone/D = locate(params["ref"]) in GLOB.mob_list + if(D.hacked) + to_chat(usr, "ERROR: [D] is not responding to external commands.") + else + var/turf/T = get_turf(D) + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") + log_game("[key_name(usr)] detonated [key_name(D)]!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, TRUE, D) + s.start() + D.visible_message("\the [D] self destructs!") + D.gib() diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 2873cd670dc..42a62cda359 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -215,7 +215,7 @@ "} dat += "" - dat += "

Minor Crimes: Add New" + dat += "

Crimes: Add New" dat +={" @@ -226,32 +226,15 @@ "} - for(var/datum/data/crime/c in active2.fields["mi_crim"]) + for(var/datum/data/crime/c in active2.fields["crim"]) dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "
Time Added Del
[c.crimeName][c.crimeDetails][c.author][c.time]\[X\]
" - - - dat += "
Major Crimes: Add New" - - dat +={" - - - - - - - "} - for(var/datum/data/crime/c in active2.fields["ma_crim"]) - dat += "" - dat += "" + if(!c.crimeDetails) + dat += "" + else + dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "
CrimeDetailsAuthorTime AddedDel
[c.crimeName][c.crimeDetails]\[+\][c.crimeDetails][c.author][c.time]\[X\]\[X\]
" @@ -401,7 +384,7 @@ What a mess.*/ if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) P.info += text("
\n
Security Data

\nCriminal Status: []", active2.fields["criminal"]) - P.info += "
\n
\nMinor Crimes:
\n" + P.info += "
\n
\nCrimes:
\n" P.info +={" @@ -409,7 +392,7 @@ What a mess.*/ "} - for(var/datum/data/crime/c in active2.fields["mi_crim"]) + for(var/datum/data/crime/c in active2.fields["crim"]) P.info += "" P.info += "" P.info += "" @@ -417,23 +400,6 @@ What a mess.*/ P.info += "" P.info += "
CrimeAuthor Time Added
[c.crimeName][c.crimeDetails][c.author]
" - P.info += "
\nMajor Crimes:
\n" - P.info +={" - - - - - -"} - for(var/datum/data/crime/c in active2.fields["ma_crim"]) - P.info += "" - P.info += "" - P.info += "" - P.info += "" - P.info += "" - P.info += "
CrimeDetailsAuthorTime Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" - - P.info += text("
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", active2.fields["notes"]) var/counter = 1 while(active2.fields[text("com_[]", counter)]) @@ -451,18 +417,10 @@ What a mess.*/ var/wanted_name = stripped_input(usr, "Please enter an alias for the criminal:", "Print Wanted Poster", active1.fields["name"]) if(wanted_name) var/default_description = "A poster declaring [wanted_name] to be a dangerous individual, wanted by Nanotrasen. Report any sightings to security immediately." - var/list/major_crimes = active2.fields["ma_crim"] - var/list/minor_crimes = active2.fields["mi_crim"] - if(major_crimes.len + minor_crimes.len) + var/list/crimes = active2.fields["crim"] + if(crimes.len) default_description += "\n[wanted_name] is wanted for the following crimes:\n" - if(minor_crimes.len) - default_description += "\nMinor Crimes:" - for(var/datum/data/crime/c in active2.fields["mi_crim"]) - default_description += "\n[c.crimeName]\n" - default_description += "[c.crimeDetails]\n" - if(major_crimes.len) - default_description += "\nMajor Crimes:" - for(var/datum/data/crime/c in active2.fields["ma_crim"]) + for(var/datum/data/crime/c in active2.fields["crim"]) default_description += "\n[c.crimeName]\n" default_description += "[c.crimeDetails]\n" @@ -544,8 +502,7 @@ What a mess.*/ R.fields["id"] = active1.fields["id"] R.name = text("Security Record #[]", R.fields["id"]) R.fields["criminal"] = "None" - R.fields["mi_crim"] = list() - R.fields["ma_crim"] = list() + R.fields["crim"] = list() R.fields["notes"] = "No notes." GLOB.data_core.security += R active2 = R @@ -574,8 +531,7 @@ What a mess.*/ R.fields["id"] = active1.fields["id"] R.name = text("Security Record #[]", R.fields["id"]) R.fields["criminal"] = "None" - R.fields["mi_crim"] = list() - R.fields["ma_crim"] = list() + R.fields["crim"] = list() R.fields["notes"] = "No notes." GLOB.data_core.security += R active2 = R @@ -697,36 +653,29 @@ What a mess.*/ if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_side"] print_photo(P.picture.picture_image, active1.fields["name"]) - if("mi_crim_add") + if("crim_add") if(istype(active1, /datum/data/record)) - var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) - var/t2 = stripped_input(usr, "Please input minor crime details:", "Secure. records", "", null) + var/t1 = stripped_input(usr, "Please input crime names:", "Secure. records", "", null) + var/t2 = stripped_input(usr, "Please input crime details:", "Secure. records", "", null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) - GLOB.data_core.addMinorCrime(active1.fields["id"], crime) - investigate_log("New Minor Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) - if("mi_crim_delete") + GLOB.data_core.addCrime(active1.fields["id"], crime) + investigate_log("New Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + if("crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) if(!canUseSecurityRecordsConsole(usr, "delete", null, a2)) return - GLOB.data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"]) - if("ma_crim_add") - if(istype(active1, /datum/data/record)) - var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) - var/t2 = stripped_input(usr, "Please input major crime details:", "Secure. records", "", null) - if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) - return - var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) - GLOB.data_core.addMajorCrime(active1.fields["id"], crime) - investigate_log("New Major Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) - if("ma_crim_delete") + GLOB.data_core.removeCrime(active1.fields["id"],href_list["cdataid"]) + if("add_details") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) - if(!canUseSecurityRecordsConsole(usr, "delete", null, a2)) + var/t1 = stripped_input(usr, "Please input crime details:", "Secure. records", "", null) + if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return - GLOB.data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"]) + GLOB.data_core.addCrimeDetails(active1.fields["id"], href_list["cdataid"], t1) + investigate_log("New Crime details: [t1] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("citation_add") if(istype(active1, /datum/data/record)) var/maxFine = CONFIG_GET(number/maxfine) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 249a3a074d6..4028a1347aa 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -5,8 +5,8 @@ icon_keyboard = "teleport_key" light_color = LIGHT_COLOR_BLUE circuit = /obj/item/circuitboard/computer/teleporter - ui_x = 475 - ui_y = 130 + ui_x = 470 + ui_y = 140 var/regime_set = "Teleporter" var/id var/obj/machinery/teleport/station/power_station diff --git a/code/game/machinery/computer/warrant.dm b/code/game/machinery/computer/warrant.dm index d5e98ec3e6b..b308c9dab09 100644 --- a/code/game/machinery/computer/warrant.dm +++ b/code/game/machinery/computer/warrant.dm @@ -66,7 +66,7 @@ dat += "" dat += "" - dat += "
Minor Crimes:" + dat += "
Crimes:" dat +={" @@ -74,23 +74,7 @@ "} - for(var/datum/data/crime/c in current.fields["mi_crim"]) - dat += {" - - - - "} - dat += "
CrimeAuthor Time Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" - - dat += "
Major Crimes:" - dat +={" - - - - - - "} - for(var/datum/data/crime/c in current.fields["ma_crim"]) + for(var/datum/data/crime/c in current.fields["crim"]) dat += {" diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index f6cc265ee6a..820b02491db 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -3,16 +3,20 @@ //Not being adjacent will cause the paddles to snap back /obj/machinery/defibrillator_mount name = "defibrillator mount" - desc = "Holds and recharges defibrillators. You can grab the paddles if one is mounted." + desc = "Holds defibrillators. You can grab the paddles if one is mounted." icon = 'icons/obj/machines/defib_mount.dmi' icon_state = "defibrillator_mount" density = FALSE use_power = IDLE_POWER_USE - idle_power_usage = 1 + idle_power_usage = 0 power_channel = EQUIP req_one_access = list(ACCESS_MEDICAL, ACCESS_HEADS, ACCESS_SECURITY) //used to control clamps - var/obj/item/defibrillator/defib //this mount's defibrillator - var/clamps_locked = FALSE //if true, and a defib is loaded, it can't be removed without unlocking the clamps +/// The mount's defib + var/obj/item/defibrillator/defib +/// if true, and a defib is loaded, it can't be removed without unlocking the clamps + var/clamps_locked = FALSE +/// the type of wallframe it 'disassembles' into + var/wallframe_type = /obj/item/wallframe/defib_mount /obj/machinery/defibrillator_mount/loaded/Initialize() //loaded subtype for mapping use . = ..() @@ -32,26 +36,20 @@ else . += "Its locking clamps can be [clamps_locked ? "dis" : ""]engaged by swiping an ID with access." -/obj/machinery/defibrillator_mount/process() - if(defib && defib.cell && defib.cell.charge < defib.cell.maxcharge && is_operational()) - use_power(200) - defib.cell.give(180) //90% efficiency, slightly better than the cell charger's 87.5% - update_icon() - /obj/machinery/defibrillator_mount/update_overlays() . = ..() - + if(!defib) return - + . += "defib" - + if(defib.powered) . += (defib.safety ? "online" : "emagged") var/ratio = defib.cell.charge / defib.cell.maxcharge ratio = CEILING(ratio * 4, 1) * 25 . += "charge[ratio]" - + if(clamps_locked) . += "clamps" @@ -120,6 +118,21 @@ update_icon() return TRUE +/obj/machinery/defibrillator_mount/wrench_act(mob/living/user, obj/item/wrench/W) + if(!wallframe_type) + return ..() + if(user.a_intent == INTENT_HARM) + return ..() + if(defib) + to_chat(user, "The mount can't be deconstructed while a defibrillator unit is loaded!") + ..() + return TRUE + new wallframe_type(get_turf(src)) + qdel(src) + W.play_tool_sound(user) + to_chat(user, "You remove [src] from the wall.") + + /obj/machinery/defibrillator_mount/AltClick(mob/living/carbon/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) return @@ -138,6 +151,20 @@ defib = null update_icon() +/obj/machinery/defibrillator_mount/charging + name = "PENLITE defibrillator mount" + desc = "Holds defibrillators. You can grab the paddles if one is mounted. This PENLITE variant also allows for slow, passive recharging of the defibrillator." + icon_state = "penlite_mount" + idle_power_usage = 1 + wallframe_type = /obj/item/wallframe/defib_mount/charging + +/obj/machinery/defibrillator_mount/charging/process() + if(defib?.cell?.charge < defib.cell.maxcharge && is_operational()) + use_power(100) + defib.cell.give(80) + update_icon() + + //wallframe, for attaching the mounts easily /obj/item/wallframe/defib_mount name = "unhooked defibrillator mount" @@ -148,3 +175,10 @@ w_class = WEIGHT_CLASS_BULKY result_path = /obj/machinery/defibrillator_mount pixel_shift = -28 + +/obj/item/wallframe/defib_mount/charging + name = "unhooked PENLITE defibrillator mount" + desc = "A frame for a PENLITE defibrillator mount. Unlike the normal mount, it can passively recharge the unit inside." + icon_state = "penlite_mount" + custom_materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver = 50) + result_path = /obj/machinery/defibrillator_mount/charging diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4d41b897523..7d1f559f3f0 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1066,25 +1066,25 @@ if(user.a_intent != INTENT_HELP) if(!W.tool_start_check(user, amount=0)) return - user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \ + user.visible_message("[user] begins [welded ? "unwelding":"welding"] the airlock.", \ "You begin [welded ? "unwelding":"welding"] the airlock...", \ "You hear welding.") if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) welded = !welded - user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \ + user.visible_message("[user] [welded? "welds shut":"unwelds"] [src].", \ "You [welded ? "weld the airlock shut":"unweld the airlock"].") update_icon() else if(obj_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return - user.visible_message("[user] is welding the airlock.", \ + user.visible_message("[user] begins welding the airlock.", \ "You begin repairing the airlock...", \ "You hear welding.") if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) obj_integrity = max_integrity machine_stat &= ~BROKEN - user.visible_message("[user.name] has repaired [src].", \ + user.visible_message("[user] finishes welding [src].", \ "You finish repairing the airlock.") update_icon() else @@ -1131,10 +1131,10 @@ return if(!operating) - if(istype(I, /obj/item/twohanded/fireaxe)) //being fireaxe'd - var/obj/item/twohanded/fireaxe/F = I - if(!F.wielded) - to_chat(user, "You need to be wielding the fire axe to do that!") + if(istype(I, /obj/item/fireaxe)) //being fireaxe'd + var/obj/item/fireaxe/axe = I + if(axe && !axe.wielded) + to_chat(user, "You need to be wielding \the [axe] to do that!") return INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2) @@ -1239,82 +1239,33 @@ locked = TRUE return +// gets called when a player uses an airlock painter on this airlock +/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/painter, mob/user) + if((!in_range(src, user) && loc != user) || !painter.can_use(user)) // user should be adjacent to the airlock, and the painter should have a toner cartridge that isn't empty + return -/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/W, mob/user) - if(!W.can_use(user)) + // reads from the airlock painter's `available paintjob` list. lets the player choose a paint option, or cancel painting + var/current_paintjob = input(user, "Please select a paintjob for this airlock.") as null|anything in sortList(painter.available_paint_jobs) + if(!current_paintjob) // if the user clicked cancel on the popup, return return - var/list/optionlist - if(airlock_material == "glass") - optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance") + var/airlock_type = painter.available_paint_jobs["[current_paintjob]"] // get the airlock type path associated with the airlock name the user just chose + var/obj/machinery/door/airlock/airlock = new airlock_type // we need to create an new instance of the airlock and assembly to read vars from them + var/obj/structure/door_assembly/assembly = new airlock.assemblytype + + if(airlock_material == "glass" && assembly.noglass) // prevents painting glass airlocks with a paint job that doesn't have a glass version, such as the freezer + to_chat(user, "This paint job can only be applied to non-glass airlocks.") else - optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Freezer", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance") + // applies the user-chosen airlock's icon, overlays and assemblytype to the src airlock + painter.use_paint(user) + icon = airlock.icon + overlays_file = airlock.overlays_file + assemblytype = airlock.assemblytype + update_icon() - var/paintjob = input(user, "Please select a paintjob for this airlock.") in sortList(optionlist) - if((!in_range(src, usr) && loc != usr) || !W.use_paint(user)) - return - switch(paintjob) - if("Standard") - icon = 'icons/obj/doors/airlocks/station/public.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly - if("Public") - icon = 'icons/obj/doors/airlocks/station2/glass.dmi' - overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_public - if("Engineering") - icon = 'icons/obj/doors/airlocks/station/engineering.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_eng - if("Atmospherics") - icon = 'icons/obj/doors/airlocks/station/atmos.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_atmo - if("Security") - icon = 'icons/obj/doors/airlocks/station/security.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_sec - if("Command") - icon = 'icons/obj/doors/airlocks/station/command.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_com - if("Medical") - icon = 'icons/obj/doors/airlocks/station/medical.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_med - if("Research") - icon = 'icons/obj/doors/airlocks/station/research.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_research - if("Freezer") - icon = 'icons/obj/doors/airlocks/station/freezer.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_fre - if("Science") - icon = 'icons/obj/doors/airlocks/station/science.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_science - if("Virology") - icon = 'icons/obj/doors/airlocks/station/virology.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_viro - if("Mining") - icon = 'icons/obj/doors/airlocks/station/mining.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_min - if("Maintenance") - icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_mai - if("External") - icon = 'icons/obj/doors/airlocks/external/external.dmi' - overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_ext - if("External Maintenance") - icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_extmai - update_icon() + // these are just hanging around but are never placed, we need to delete them + qdel(airlock) + qdel(assembly) /obj/machinery/door/airlock/CanAStarPass(obj/item/card/id/ID) //Airlock is passable if it is open (!density), bot has access, and is not bolted shut or powered off) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 725082d526f..004af45df28 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -207,7 +207,7 @@ return /obj/machinery/door/attackby(obj/item/I, mob/user, params) - if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/twohanded/fireaxe))) + if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/fireaxe))) var/forced_open = FALSE if(istype(I, /obj/item/crowbar)) var/obj/item/crowbar/C = I @@ -412,3 +412,8 @@ /obj/machinery/door/GetExplosionBlock() return density ? real_explosion_block : 0 + +/obj/machinery/door/power_change() + . = ..() + if(. && !(machine_stat & NOPOWER)) + autoclose_in(rand(0.5 SECONDS, 3 SECONDS)) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index ed41821cf59..f863d73710f 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -30,6 +30,9 @@ light_range = 7 light_color = "#ff3232" + //Trick to get the glowing overlay visible from a distance + luminosity = 1 + var/detecting = 1 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone var/last_alarm = 0 @@ -74,22 +77,27 @@ if(is_station_level(z)) . += "fire_[GLOB.security_level]" - SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", layer, EMISSIVE_PLANE, dir) else . += "fire_[SEC_LEVEL_GREEN]" - SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", layer, EMISSIVE_PLANE, dir) var/area/A = get_area(src) if(!detecting || !A.fire) . += "fire_off" - SSvis_overlays.add_vis_overlay(src, icon, "fire_off", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_off", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_off", layer, EMISSIVE_PLANE, dir) else if(obj_flags & EMAGGED) . += "fire_emagged" - SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", layer, EMISSIVE_PLANE, dir) else . += "fire_on" - SSvis_overlays.add_vis_overlay(src, icon, "fire_on", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_on", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "fire_on", layer, EMISSIVE_PLANE, dir) /obj/machinery/firealarm/emp_act(severity) . = ..() @@ -179,9 +187,9 @@ if(W.tool_behaviour == TOOL_MULTITOOL) detecting = !detecting if (src.detecting) - user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") + user.visible_message("[user] reconnects [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") else - user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.") + user.visible_message("[user] disconnects [src]'s detecting unit!", "You disconnect [src]'s detecting unit.") return else if(W.tool_behaviour == TOOL_WIRECUTTER) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 9a2dd768340..a8196b91573 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -63,7 +63,7 @@ if (bulb) user.visible_message("[user] begins to disconnect [src]'s flashbulb.", "You begin to disconnect [src]'s flashbulb...") if(W.use_tool(src, user, 30, volume=50) && bulb) - user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb.") + user.visible_message("[user] disconnects [src]'s flashbulb!", "You disconnect [src]'s flashbulb.") bulb.forceMove(loc) bulb = null power_change() diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index bccd3feccd4..c872fa661a7 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -8,8 +8,8 @@ use_power = IDLE_POWER_USE idle_power_usage = 100 active_power_usage = 2500 - ui_x = 300 - ui_y = 300 + ui_x = 325 + ui_y = 400 var/list/stored_items = list() var/obj/machinery/gulag_teleporter/linked_teleporter = null diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 1883f125d1b..4d97055d7d5 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -100,9 +100,9 @@ add_fingerprint(user) src.disable = !src.disable if (src.disable) - user.visible_message("[user] has disabled \the [src]!", "You disable the connection to \the [src].") + user.visible_message("[user] disables \the [src]!", "You disable the connection to \the [src].") if (!src.disable) - user.visible_message("[user] has reconnected \the [src]!", "You fix the connection to \the [src].") + user.visible_message("[user] reconnects \the [src]!", "You fix the connection to \the [src].") update_icon() else return ..() diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index e10d82e5b32..a2d565d5974 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -24,9 +24,13 @@ update_icon() /obj/machinery/light_switch/update_icon_state() + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + luminosity = 0 if(machine_stat & NOPOWER) icon_state = "light-p" else + luminosity = 1 + SSvis_overlays.add_vis_overlay(src, icon, "light-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) if(area.lightswitch) icon_state = "light1" else diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 43daf1ec5f1..02c320f2a48 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -9,7 +9,6 @@ icon_state = "floor_magnet-f" name = "electromagnetic generator" desc = "A device that uses station power to create points of magnetic energy." - level = 1 // underfloor layer = LOW_OBJ_LAYER use_power = IDLE_POWER_USE idle_power_usage = 50 @@ -30,9 +29,11 @@ /obj/machinery/magnetic_module/Initialize() ..() var/turf/T = loc - hide(T.intact) center = T SSradio.add_object(src, freq, RADIO_MAGNETS) + + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) + return INITIALIZE_HINT_LATELOAD /obj/machinery/magnetic_module/LateInitialize() @@ -43,23 +44,16 @@ center = null return ..() -// update the invisibility and icon -/obj/machinery/magnetic_module/hide(intact) - invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - update_icon() // update the icon_state /obj/machinery/magnetic_module/update_icon_state() var/state="floor_magnet" var/onstate="" + if(!on) onstate="0" - if(invisibility) - icon_state = "[state][onstate]-f" // if invisible, set icon to faded version - // in case of being revealed by T-scanner - else - icon_state = "[state][onstate]" + icon_state = "[state][onstate]" /obj/machinery/magnetic_module/receive_signal(datum/signal/signal) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 4cb33e4d1a1..64ea63081cf 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -7,7 +7,6 @@ icon_state = "navbeacon0-f" name = "navigation beacon" desc = "A radio beacon used for bot navigation and crew wayfinding." - level = 1 // underfloor layer = LOW_OBJ_LAYER max_integrity = 500 armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) @@ -36,11 +35,10 @@ set_codes() - var/turf/T = loc - hide(T.intact) - glob_lists_register(init=TRUE) + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) + /obj/machinery/navbeacon/Destroy() glob_lists_deregister() return ..() @@ -90,21 +88,9 @@ if(codes["wayfinding"]) GLOB.wayfindingbeacons += src -// called when turf state changes -// hide the object if turf is intact -/obj/machinery/navbeacon/hide(intact) - invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - update_icon() - // update the icon_state /obj/machinery/navbeacon/update_icon_state() - var/state="navbeacon[open]" - - if(invisibility) - icon_state = "[state]-f" // if invisible, set icon to faded version - // in case revealed by T-scanner - else - icon_state = "[state]" + icon_state = "navbeacon[open]" /obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params) var/turf/T = loc diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index e5d42354373..25c9bddeff0 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -18,7 +18,6 @@ Buildable meters icon_state = "simple" item_state = "buildpipe" w_class = WEIGHT_CLASS_NORMAL - level = 2 var/piping_layer = PIPING_LAYER_DEFAULT var/RPD_type diff --git a/code/game/machinery/prisonlabor.dm b/code/game/machinery/prisonlabor.dm new file mode 100644 index 00000000000..b76a62a6bea --- /dev/null +++ b/code/game/machinery/prisonlabor.dm @@ -0,0 +1,66 @@ +/obj/machinery/plate_press + name = "license plate press" + desc = "You know, we're making a lot of license plates for a station with literaly no cars in it." + icon = 'icons/obj/machines/prison.dmi' + icon_state = "offline" + use_power = IDLE_POWER_USE + idle_power_usage = 2 + active_power_usage = 50 + var/obj/item/stack/license_plates/empty/current_plate + var/pressing = FALSE + +/obj/machinery/plate_press/update_icon() + . = ..() + if(!is_operational()) + icon_state = "offline" + else if(pressing) + icon_state = "loop" + else if(current_plate) + icon_state = "online_loaded" + else + icon_state = "online" + +/obj/machinery/plate_press/Destroy() + QDEL_NULL(current_plate) + . = ..() + +/obj/machinery/plate_press/attackby(obj/item/I, mob/living/user, params) + if(!is_operational()) + to_chat(user, "[src] has to be on to do this!") + return FALSE + if(pressing) + to_chat(user, "[src] already has a plate in it!") + return FALSE + if(istype(I, /obj/item/stack/license_plates/empty)) + var/obj/item/stack/license_plates/empty/plate = I + plate.use(1) + current_plate = new plate.type(src, 1) //Spawn a new single sheet in the machine + update_icon() + else + return ..() + +/obj/machinery/plate_press/attack_hand(mob/living/user) + . = ..() + if(!pressing && current_plate) + work_press(user) + +///This proc attempts to create a plate. User cannot move during this process. +/obj/machinery/plate_press/proc/work_press(mob/living/user) + + pressing = TRUE + update_icon() + to_chat(user, "You start pressing a new license plate!") + + if(!do_after(user, 40, target = src)) + pressing = FALSE + update_icon() + return FALSE + + use_power(100) + to_chat(user, "You finish pressing a new license plate!") + + pressing = FALSE + QDEL_NULL(current_plate) + update_icon() + + new /obj/item/stack/license_plates/filled(drop_location(), 1) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 0e8678582b2..bb1df8ea8cd 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,7 +1,7 @@ /obj/machinery/recharger name = "recharger" icon = 'icons/obj/stationobjs.dmi' - icon_state = "recharger0" + icon_state = "recharger" desc = "A charging dock for energy based weaponry." use_power = IDLE_POWER_USE idle_power_usage = 4 @@ -158,16 +158,24 @@ if(B.cell) B.cell.charge = 0 - -/obj/machinery/recharger/update_icon_state() +/obj/machinery/recharger/update_overlays() + . = ..() + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + luminosity = 0 if(machine_stat & (NOPOWER|BROKEN) || !anchored) - icon_state = "rechargeroff" - else if(panel_open) - icon_state = "rechargeropen" - else if(charging) + return + if(panel_open) + SSvis_overlays.add_vis_overlay(src, icon, "recharger-open", layer, plane, dir, alpha) + return + + luminosity = 1 + if (charging) if(using_power) - icon_state = "recharger1" + SSvis_overlays.add_vis_overlay(src, icon, "recharger-charging", layer, plane, dir, alpha) + SSvis_overlays.add_vis_overlay(src, icon, "recharger-charging", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) else - icon_state = "recharger2" + SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", layer, plane, dir, alpha) + SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) else - icon_state = "recharger0" + SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", layer, plane, dir, alpha) + SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm index e6f430e22e5..cc2b932c2c9 100644 --- a/code/game/machinery/scan_gate.dm +++ b/code/game/machinery/scan_gate.dm @@ -51,7 +51,10 @@ . += "The control panel is unlocked. Swipe an ID to lock it." /obj/machinery/scanner_gate/Crossed(atom/movable/AM) - ..() + . = ..() + auto_scan(AM) + +/obj/machinery/scanner_gate/proc/auto_scan(atom/movable/AM) if(!(machine_stat & (BROKEN|NOPOWER)) && isliving(AM)) perform_scan(AM) diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm new file mode 100644 index 00000000000..9c728d89adf --- /dev/null +++ b/code/game/machinery/sheetifier.dm @@ -0,0 +1,44 @@ +/obj/machinery/sheetifier + name = "Sheet-meister 2000" + desc = "A very sheety machine" + icon = 'icons/obj/machines/sheetifier.dmi' + icon_state = "base_machine" + density = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 100 + circuit = /obj/item/circuitboard/machine/sheetifier + layer = BELOW_OBJ_LAYER + var/busy_processing = FALSE + +/obj/machinery/sheetifier/Initialize() + . = ..() + AddComponent(/datum/component/material_container, list(/datum/material/meat), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, /obj/item/reagent_containers/food/snacks/meat/slab, CALLBACK(src, .proc/CanInsertMaterials), CALLBACK(src, .proc/AfterInsertMaterials)) + +/obj/machinery/sheetifier/update_overlays() + . = ..() + if(machine_stat & (BROKEN|NOPOWER)) + return + var/mutable_appearance/on_overlay = mutable_appearance(icon, "buttons_on") + . += on_overlay + +/obj/machinery/sheetifier/update_icon_state() + icon_state = "base_machine[busy_processing ? "_processing" : ""]" + +/obj/machinery/sheetifier/proc/CanInsertMaterials() + return !busy_processing + +/obj/machinery/sheetifier/proc/AfterInsertMaterials(item_inserted, id_inserted, amount_inserted) + busy_processing = TRUE + update_icon() + var/datum/material/last_inserted_material = id_inserted + var/mutable_appearance/processing_overlay = mutable_appearance(icon, "processing") + processing_overlay.color = last_inserted_material.color + flick_overlay_static(processing_overlay, src, 64) + addtimer(CALLBACK(src, .proc/finish_processing), 64) + +/obj/machinery/sheetifier/proc/finish_processing() + busy_processing = FALSE + update_icon() + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + materials.retrieve_all() //Returns all as sheets diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 454dedaf125..888e627482e 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -221,16 +221,7 @@ if(!panel_open) return var/target = params["target"] - var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New target temperature:", name, round(targetTemperature - T0C, 1)) as num|null - if(!isnull(target) && !..()) - target += T0C - . = TRUE - else if(adjust) - target = targetTemperature + adjust - . = TRUE - else if(text2num(target) != null) + if(text2num(target) != null) target= text2num(target) + T0C . = TRUE if(.) diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm index 8daab3a9e16..da8111f5714 100644 --- a/code/game/machinery/stasis.dm +++ b/code/game/machinery/stasis.dm @@ -161,9 +161,4 @@ /obj/machinery/stasis/nap_violation(mob/violator) unbuckle_mob(violator, TRUE) -/obj/machinery/stasis/attack_robot(mob/user) - if(Adjacent(user) && occupant) - unbuckle_mob(occupant) - else - ..() #undef STASIS_TOGGLE_COOLDOWN diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index e07708b93ba..e903356cd02 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -34,7 +34,6 @@ return /obj/machinery/blackbox_recorder/attackby(obj/item/I, mob/living/user, params) - . = ..() if(istype(I, /obj/item/blackbox)) if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") @@ -44,7 +43,7 @@ playsound(src, 'sound/machines/click.ogg', 50, TRUE) stored = I update_icon() - return ..() + return return ..() /obj/machinery/blackbox_recorder/Destroy() diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index d688bde2b9e..01d4be65e78 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -211,14 +211,14 @@ GLOBAL_LIST_INIT(dye_registry, list( return /obj/item/stack/sheet/hairlesshide/machine_wash(obj/machinery/washing_machine/WM) - new /obj/item/stack/sheet/wetleather(drop_location(), amount) + new /obj/item/stack/sheet/wethide(drop_location(), amount) qdel(src) /obj/item/clothing/suit/hooded/ian_costume/machine_wash(obj/machinery/washing_machine/WM) new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(loc) qdel(src) -/mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM) +/mob/living/simple_animal/pet/machine_wash(obj/machinery/washing_machine/WM) WM.bloody_mess = TRUE gib() @@ -239,6 +239,10 @@ GLOBAL_LIST_INIT(dye_registry, list( addtimer(VARSET_CALLBACK(src, freshly_laundered, FALSE), 5 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE) ..() +/obj/item/clothing/head/mob_holder/machine_wash(obj/machinery/washing_machine/WM) + ..() + held_mob.machine_wash(WM) + /obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/WM) if(chained) chained = 0 @@ -292,7 +296,6 @@ GLOBAL_LIST_INIT(dye_registry, list( if(!user.transferItemToLoc(W, src)) to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine!") return TRUE - if(W.dye_color) color_source = W update_icon() @@ -313,7 +316,7 @@ GLOBAL_LIST_INIT(dye_registry, list( if(L.buckled || L.has_buckled_mobs()) return if(state_open) - if(iscorgi(L)) + if(istype(L, /mob/living/simple_animal/pet)) L.forceMove(src) update_icon() return diff --git a/code/game/mecha/combat/five_stars.dm b/code/game/mecha/combat/five_stars.dm new file mode 100644 index 00000000000..c0be45b0a2a --- /dev/null +++ b/code/game/mecha/combat/five_stars.dm @@ -0,0 +1,22 @@ +/obj/mecha/combat/five_stars + desc = "A state of the art tank deployed by the Spinward Stellar Coalition National Guard." + name = "\improper Tank" + icon = 'icons/mecha/mecha_96x96.dmi' + icon_state = "five_stars" + armor = list("melee" = 100, "bullet" = 50, "laser" = 35, "energy" = 35, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + exit_delay = 40 + step_in = 4 + dir_in = 1 //Facing North. + max_integrity = 800 + pixel_x = -32 + pixel_y = -32 + +/obj/mecha/combat/five_stars/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/spacecops(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) + ME.attach(src) + max_ammo() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index aaef96cce15..7e2d8e8a2dd 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -323,7 +323,7 @@ if(length(mobs)) var/mob/living/carbon/M = pick(mobs) var/R - mechsyringe.visible_message(" [M] was hit by the syringe!") + mechsyringe.visible_message(" [M] is hit by the syringe!") if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index c276ed5f790..6721e2ebc56 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -342,6 +342,9 @@ harmful = TRUE ammo_type = "missiles_he" +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/spacecops + projectiles = 420 + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching name = "\improper BRM-6 missile rack" desc = "A weapon for combat exosuits. Launches low-explosive breaching missiles designed to explode only when striking a sturdy target." diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 599fdf00b03..3d845303bfb 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -878,6 +878,9 @@ return if(!ishuman(user)) // no silicons or drones in mechas. return + if(HAS_TRAIT(user, TRAIT_PRIMITIVE)) //no lavalizards either. + to_chat(user, "The knowledge to use this device eludes you!") + return log_message("[user] tries to move in.", LOG_MECHA) if (occupant) to_chat(usr, "The [name] is already occupied!") diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index d997b0242d6..f64eda0e9f5 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -59,7 +59,7 @@ . = user.transferItemToLoc(I, parent) if(.) var/atom/parent_atom = parent - user.visible_message("[user] has connected [I] to [parent].", "You connect [I] to [parent].") + user.visible_message("[user] connects [I] to [parent].", "You connect [I] to [parent].") parent_atom.add_overlay(I.icon_state+"+o") qdel(I) @@ -1054,7 +1054,7 @@ "key" = /obj/item/assembly/signaler/anomaly, //WaspStation Edit - Any anomaly core for Phazons "action" = ITEM_DELETE, "back_key" = TOOL_WELDER, - "desc" = "Anomaly core socket is open.", + "desc" = "Bluespace anomaly core socket is open.", "icon_state" = "phazon24" ) ) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 9d8b2a6fde3..3a9cb26f50e 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -5,49 +5,74 @@ icon_keyboard = "tech_key" req_access = list(ACCESS_ROBOTICS) circuit = /obj/item/circuitboard/computer/mecha_control - var/list/located = list() + ui_x = 500 + ui_y = 500 + +/obj/machinery/computer/mecha/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) + if(!ui) + ui = new(user, src, ui_key, "exosuit_control_console", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/computer/mecha/ui_data(mob/user) + var/list/data = list() -/obj/machinery/computer/mecha/ui_interact(mob/user) - . = ..() - var/dat = {"[src.name]
-

Tracking beacons data

"} var/list/trackerlist = list() for(var/obj/mecha/MC in GLOB.mechas_list) trackerlist += MC.trackers - for(var/obj/item/mecha_parts/mecha_tracking/TR in trackerlist) - var/answer = TR.get_mecha_info() - if(answer) - dat += {"
[answer]

- Send Message | [TR.recharging?"Recharging EMP Pulse...
":"(EMP Pulse)
"]"} - - dat += "
" - dat += "(Refresh)
" - dat += "" - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - -/obj/machinery/computer/mecha/Topic(href, href_list) + data["mechs"] = list() + for(var/obj/item/mecha_parts/mecha_tracking/MT in trackerlist) + if(!MT.chassis) + continue + var/obj/mecha/M = MT.chassis + var/list/mech_data = list( + name = M.name, + integrity = round((M.obj_integrity / M.max_integrity) * 100), + charge = M.cell ? round(M.cell.percent()) : null, + airtank = M.internal_tank ? M.return_pressure() : null, + pilot = M.occupant, + location = get_area_name(M, TRUE), + active_equipment = M.selected, + emp_recharging = MT.recharging, + tracker_ref = REF(MT) + ) + if(istype(M, /obj/mecha/working/ripley)) + var/obj/mecha/working/ripley/RM = M + mech_data += list( + cargo_space = round((RM.cargo.len / RM.cargo_capacity) * 100) + ) + + data["mechs"] += list(mech_data) + + return data + +/obj/machinery/computer/mecha/ui_act(action, params) if(..()) return - if(href_list["send_message"]) - var/obj/item/mecha_parts/mecha_tracking/MT = locate(href_list["send_message"]) - if (!istype(MT)) - return - var/message = stripped_input(usr,"Input message","Transmit message") - var/obj/mecha/M = MT.in_mecha() - if(trim(message) && M) - M.occupant_message(message) - return - if(href_list["shock"]) - var/obj/item/mecha_parts/mecha_tracking/MT = locate(href_list["shock"]) - if (istype(MT) && MT.chassis) - MT.shock() - log_game("[key_name(usr)] has activated remote EMP on exosuit [MT.chassis], located at [loc_name(MT.chassis)], which is currently [MT.chassis.occupant? "being piloted by [key_name(MT.chassis.occupant)]." : "without a pilot."] ") - message_admins("[key_name_admin(usr)][ADMIN_FLW(usr)] has activated remote EMP on exosuit [MT.chassis][ADMIN_JMP(MT.chassis)], which is currently [MT.chassis.occupant? "being piloted by [key_name_admin(MT.chassis.occupant)][ADMIN_FLW(MT.chassis.occupant)]." : "without a pilot."] ") - updateUsrDialog() - return + switch(action) + if("send_message") + var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["tracker_ref"]) + if(!istype(MT)) + return + var/message = stripped_input(usr, "Input message", "Transmit message") + var/obj/mecha/M = MT.chassis + if(trim(message) && M) + M.occupant_message(message) + to_chat(usr, "Message sent.") + . = TRUE + if("shock") + var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["tracker_ref"]) + if(!istype(MT)) + return + var/obj/mecha/M = MT.chassis + if(M) + MT.shock() + log_game("[key_name(usr)] has activated remote EMP on exosuit [M], located at [loc_name(M)], which is currently [M.occupant? "being piloted by [key_name(M.occupant)]." : "without a pilot."] ") + message_admins("[key_name_admin(usr)][ADMIN_FLW(usr)] has activated remote EMP on exosuit [M][ADMIN_JMP(M)], which is currently [M.occupant ? "being piloted by [key_name_admin(M.occupant)][ADMIN_FLW(M.occupant)]." : "without a pilot."] ") + . = TRUE /obj/item/mecha_parts/mecha_tracking name = "exosuit tracking beacon" @@ -55,25 +80,31 @@ icon = 'icons/obj/device.dmi' icon_state = "motion2" w_class = WEIGHT_CLASS_SMALL - var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking. - var/recharging = 0 + /// If this beacon allows for AI control. Exists to avoid using istype() on checking + var/ai_beacon = FALSE + /// Cooldown variable for EMP pulsing + var/recharging = FALSE + /// The Mecha that this tracking beacon is attached to var/obj/mecha/chassis +/** + * Returns a html formatted string describing attached mech status + */ /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info() - if(!in_mecha()) - return 0 - var/obj/mecha/M = src.loc - var/cell_charge = M.get_charge() - var/answer = {"Name: [M.name]
-Integrity: [round((M.obj_integrity/M.max_integrity*100), 0.01)]%
-Cell Charge: [isnull(cell_charge)?"Not Found":"[M.cell.percent()]%"]
-Airtank: [M.internal_tank?"[round(M.return_pressure(), 0.01)]":"Not Equipped"] kPa
-Pilot: [M.occupant||"None"]
-Location: [get_area_name(M, TRUE)||"Unknown"]
-Active Equipment: [M.selected||"None"]"} - if(istype(M, /obj/mecha/working/ripley)) - var/obj/mecha/working/ripley/RM = M - answer += "
Used Cargo Space: [round((RM.cargo.len/RM.cargo_capacity*100), 0.01)]%" + if(!chassis) + return FALSE + + var/cell_charge = chassis.get_charge() + var/answer = {"Name: [chassis.name]
+ Integrity: [round((chassis.obj_integrity/chassis.max_integrity * 100), 0.01)]%
+ Cell Charge: [isnull(cell_charge) ? "Not Found":"[chassis.cell.percent()]%"]
+ Airtank: [chassis.internal_tank ? "[round(chassis.return_pressure(), 0.01)]" : "Not Equipped"] kPa
+ Pilot: [chassis.occupant || "None"]
+ Location: [get_area_name(chassis, TRUE) || "Unknown"]
+ Active Equipment: [chassis.selected || "None"]"} + if(istype(chassis, /obj/mecha/working/ripley)) + var/obj/mecha/working/ripley/RM = chassis + answer += "
Used Cargo Space: [round((RM.cargo.len / RM.cargo_capacity * 100), 0.01)]%" return answer @@ -83,10 +114,9 @@ qdel(src) /obj/item/mecha_parts/mecha_tracking/Destroy() - if(ismecha(loc)) - var/obj/mecha/M = loc - if(src in M.trackers) - M.trackers -= src + if(chassis) + if(src in chassis.trackers) + chassis.trackers -= src chassis = null return ..() @@ -97,29 +127,28 @@ M.diag_hud_set_mechtracking() chassis = M -/obj/item/mecha_parts/mecha_tracking/proc/in_mecha() - if(ismecha(loc)) - return loc - return 0 - +/** + * Attempts to EMP mech that the tracker is attached to, if there is one and tracker is not on cooldown + */ /obj/item/mecha_parts/mecha_tracking/proc/shock() if(recharging) return - var/obj/mecha/M = in_mecha() - if(M) - M.emp_act(EMP_HEAVY) + if(chassis) + chassis.emp_act(EMP_HEAVY) addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) - recharging = 1 + recharging = TRUE +/** + * Resets recharge variable, allowing tracker to be EMP pulsed again + */ /obj/item/mecha_parts/mecha_tracking/proc/recharge() - recharging = 0 + recharging = FALSE /obj/item/mecha_parts/mecha_tracking/ai_control name = "exosuit AI control beacon" desc = "A device used to transmit exosuit data. Also allows active AI units to take control of said exosuit." ai_beacon = TRUE - /obj/item/storage/box/mechabeacons name = "exosuit tracking beacons" diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 7b617a3dd01..74b3cf9b67f 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -232,6 +232,11 @@ name = "\improper Phazon chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/phazon +/obj/item/mecha_parts/chassis/phazon/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/assembly/signaler/anomaly) && !istype(I, /obj/item/assembly/signaler/anomaly/bluespace)) + to_chat(user, "The anomaly core socket only accepts bluespace anomaly cores!") + /obj/item/mecha_parts/part/phazon_torso name="\improper Phazon torso" desc="A Phazon torso part. The socket for the bluespace core that powers the exosuit's unique phase drives is located in the middle." diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 7d6662a6876..4d483fa8de4 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -20,6 +20,20 @@ if(user_unbuckle_mob(buckled_mobs[1],user)) return 1 +//literally just the above extension of attack_hand(), but for silicons instead (with an adjacency check, since attack_robot() being called doesn't mean that you're adjacent to something) +/atom/movable/attack_robot(mob/living/user) + . = ..() + if(.) + return + if(Adjacent(user) && can_buckle && has_buckled_mobs()) + if(buckled_mobs.len > 1) + var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in sortNames(buckled_mobs) + if(user_unbuckle_mob(unbuckled,user)) + return TRUE + else + if(user_unbuckle_mob(buckled_mobs[1],user)) + return TRUE + /atom/movable/MouseDrop_T(mob/living/M, mob/living/user) . = ..() return mouse_buckle_handling(M, user) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 5dcbc9ea952..16bc321b211 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -53,6 +53,7 @@ return 0 /obj/effect/acid/Crossed(AM as mob|obj) + . = ..() if(isliving(AM)) var/mob/living/L = AM if(L.movement_type & FLYING) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 78b8179799f..e6f7584a887 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -107,6 +107,7 @@ O.throw_at(target, 5, 10) /obj/effect/anomaly/grav/Crossed(atom/movable/AM) + . = ..() gravShock(AM) /obj/effect/anomaly/grav/Bump(atom/A) @@ -154,6 +155,7 @@ mobShock(M) /obj/effect/anomaly/flux/Crossed(atom/movable/AM) + . = ..() mobShock(AM) /obj/effect/anomaly/flux/Bump(atom/A) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index e9fe943587a..f1d777b8dab 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST(gang_tags) + /obj/effect/decal/cleanable/crayon name = "rune" desc = "Graffiti. Damn kids." @@ -28,6 +30,20 @@ if(main) paint_colour = main add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) - /obj/effect/decal/cleanable/crayon/NeverShouldHaveComeHere(turf/T) return isgroundlessturf(T) + +/obj/effect/decal/cleanable/crayon/gang + name = "Leet Like Jeff K gang tag" + desc = "Looks like someone's claimed this area for Leet Like Jeff K." + icon = 'icons/obj/gang/tags.dmi' + layer = BELOW_MOB_LAYER + var/datum/team/gang/my_gang + +/obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, main, type, e_name, graf_rot, alt_icon = null) + . = ..() + LAZYADD(GLOB.gang_tags, src) + +/obj/effect/decal/cleanable/crayon/gang/Destroy() + LAZYREMOVE(GLOB.gang_tags, src) + ..() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index c6461b6baac..1edd966ce0b 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -141,10 +141,6 @@ for(var/obj/O in range(0,src)) if(O.type == src.type) continue - if(isturf(O.loc)) - var/turf/T = O.loc - if(T.intact && O.level == 1) //hidden under the floor - continue if(lifetime % reagent_divisor) reagents.reaction(O, VAPOR, fraction) var/hit = 0 diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 0493a176827..e0660523811 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -178,7 +178,7 @@ if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber. U.welded = TRUE U.update_icon() - U.visible_message("[U] was frozen shut!") + U.visible_message("[U] is frozen shut!") for(var/mob/living/L in T) L.ExtinguishMob() for(var/obj/item/Item in T) @@ -232,8 +232,6 @@ for(var/atom/movable/AM in T) if(AM.type == src.type) continue - if(T.intact && AM.level == 1) //hidden under the floor - continue reagents.reaction(AM, TOUCH, fraction) reagents.reaction(T, TOUCH, fraction) diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm index 00eac5b0a09..2cd2469637b 100644 --- a/code/game/objects/effects/effect_system/effects_sparks.dm +++ b/code/game/objects/effects/effect_system/effects_sparks.dm @@ -29,7 +29,7 @@ return INITIALIZE_HINT_LATELOAD /obj/effect/particle_effect/sparks/LateInitialize() - flick(icon_state, src) // replay the animation + flick(icon_state, src) playsound(src, "sparks", 100, TRUE) var/turf/T = loc if(isturf(T)) diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 92b13ce9187..7e18077c841 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -6,6 +6,7 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF move_resist = INFINITY obj_flags = 0 + vis_flags = VIS_INHERIT_PLANE /obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) return diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7b6f768600e..41a90c85153 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -187,6 +187,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = "Virologist" icon_state = "Virologist" +/obj/effect/landmark/start/psychologist + name = "Psychologist" + icon_state = "Psychologist" + /obj/effect/landmark/start/chaplain name = "Chaplain" icon_state = "Chaplain" @@ -433,3 +437,9 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) GLOB.ruin_landmarks -= src ruin_template = null . = ..() + +// handled in portals.dm, id connected to one-way portal +/obj/effect/landmark/portal_exit + name = "portal exit" + icon_state = "portal_exit" + var/id diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 30f28343fff..1193ce213c2 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -11,6 +11,7 @@ to_chat(victim, "*click*") /obj/effect/mine/Crossed(AM as mob|obj) + . = ..() if(isturf(loc)) if(ismob(AM)) var/mob/MM = AM @@ -132,14 +133,13 @@ INVOKE_ASYNC(src, .proc/blood_delusion, victim) - var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc) + var/obj/item/chainsaw/doomslayer/chainsaw = new(victim.loc) victim.log_message("entered a blood frenzy", LOG_ATTACK) ADD_TRAIT(chainsaw, TRAIT_NODROP, CHAINSAW_FRENZY_TRAIT) victim.drop_all_held_items() victim.put_in_hands(chainsaw, forced = TRUE) chainsaw.attack_self(victim) - chainsaw.wield(victim) victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") @@ -177,7 +177,7 @@ if(!victim.client || !istype(victim)) return to_chat(victim, "You feel fast!") - victim.add_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + victim.add_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) sleep(duration) - victim.remove_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB) + victim.remove_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) to_chat(victim, "You slow down.") diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 596e428c7f2..b3101198276 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -49,5 +49,6 @@ /obj/effect/overlay/vis mouse_opacity = MOUSE_OPACITY_TRANSPARENT anchored = TRUE + vis_flags = NONE var/unused = 0 //When detected to be unused it gets set to world.time, after a while it gets removed var/cache_expiration = 2 MINUTES // overlays which go unused for 2 minutes get cleaned up diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 6fb7f1261e2..be817e042bc 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -28,6 +28,7 @@ var/allow_anchored = FALSE var/innate_accuracy_penalty = 0 var/last_effect = 0 + var/force_teleport = FALSE /obj/effect/portal/anom name = "wormhole" @@ -160,7 +161,7 @@ no_effect = TRUE else last_effect = world.time - if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel)) + if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel, forced = force_teleport)) if(istype(M, /obj/projectile)) var/obj/projectile/P = M P.ignore_source_check = TRUE @@ -185,29 +186,18 @@ /obj/effect/portal/permanent name = "permanent portal" desc = "An unwavering portal that will never fade." - var/id // var edit or set id in map editor hardlinked = FALSE // dont qdel my portal nerd + force_teleport = TRUE // force teleports because they're a mapmaker tool + var/id // var edit or set id in map editor -/obj/effect/portal/permanent/Initialize(mapload, _lifespan = 0, obj/effect/portal/_linked, automatic_link = FALSE, turf/hard_target_override, atmos_link_override) - . = ..() - set_linked() - -/obj/effect/portal/permanent/proc/get_linked() +/obj/effect/portal/permanent/proc/set_linked() if(!id) return - var/list/possible = list() for(var/obj/effect/portal/permanent/P in GLOB.portals - src) - if(P.id && P.id == id) // gets portals with the same id, there should only be two permanent portals with the same id - possible += P - return possible - -/obj/effect/portal/permanent/proc/set_linked() - var/list/possible = get_linked() - if(!possible || !possible.len) - return - for(var/obj/effect/portal/permanent/other in possible) - other.linked = src - linked = pick(possible) + if(P.id == id) + P.linked = src + linked = P + break /obj/effect/portal/permanent/teleport(atom/movable/M, force = FALSE) // Made perma portals always teleport even in noteleport areas since they are mapmaker only if(!force && (!istype(M) || iseffect(M) || (ismecha(M) && !mech_sized) || (isobj(M) && !ismob(M)))) //Things that shouldn't teleport. @@ -234,25 +224,26 @@ . = ..() return FALSE -/obj/effect/portal/permanent/one_way // doesn't have a return portal +/obj/effect/portal/permanent/one_way // doesn't have a return portal, can have multiple exits, /obj/effect/landmark/portal_exit to mark them name = "one-way portal" desc = "You get the feeling that this might not be the safest thing you've ever done." - var/list/possible_exits = list() - var/keep // if this is a portal that should be kept /obj/effect/portal/permanent/one_way/set_linked() - if(!keep) // wait for a keep portal to set + if(!id) return - var/list/possible_temp = get_linked() - if(possible_temp && possible_temp.len) - for(var/obj/effect/portal/permanent/other in possible_temp) - possible_exits += get_turf(other) - qdel(other) - if(possible_exits && possible_exits.len) - hard_target = pick(possible_exits) - -/obj/effect/portal/permanent/one_way/keep // because its nice to be able to tell which is which on the map - keep = TRUE - -/obj/effect/portal/permanent/one_way/destroy - keep = FALSE + var/list/possible_turfs = list() + for(var/obj/effect/landmark/portal_exit/PE in GLOB.landmarks_list) + if(PE.id == id) + var/turf/T = get_turf(PE) + if(T) + possible_turfs |= T + if(possible_turfs.len) + hard_target = pick(possible_turfs) + +/obj/effect/portal/permanent/one_way/one_use + name = "one-use portal" + desc = "This is probably the worst decision you'll ever make in your life." + +/obj/effect/portal/permanent/one_way/one_use/teleport(atom/movable/M, force = FALSE) + . = ..() + qdel(src) diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index dbd9867d6da..677e2c3b256 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -112,4 +112,5 @@ /obj/effect/abstract/proximity_checker/Crossed(atom/movable/AM) set waitfor = FALSE + . = ..() monitor.hasprox_receiver.HasProximity(AM) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 5bc486a523f..fe23df4bd5b 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -67,7 +67,50 @@ /obj/item/gun/ballistic/shotgun/automatic/combat = 5, /obj/item/bikehorn/golden, /obj/item/grenade/clusterbuster, - /obj/item/storage/box/syndie_kit/throwing_weapons = 3) + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/gun/ballistic/revolver/mateba) + +/obj/effect/spawner/lootdrop/prison_contraband + name = "prison contraband loot spawner" + loot = list(/obj/item/clothing/mask/cigarette/space_cigarette = 4, + /obj/item/clothing/mask/cigarette/robust = 2, + /obj/item/clothing/mask/cigarette/carp = 3, + /obj/item/clothing/mask/cigarette/uplift = 2, + /obj/item/clothing/mask/cigarette/dromedary = 3, + /obj/item/clothing/mask/cigarette/robustgold = 1, + /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, + /obj/item/storage/fancy/cigarettes = 3, + /obj/item/clothing/mask/cigarette/rollie/cannabis = 4, + /obj/item/toy/crayon/spraycan = 2, + /obj/item/crowbar = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/restraints/handcuffs/cable/zipties = 1, + /obj/item/restraints/handcuffs = 1, + /obj/item/radio/off = 1, + /obj/item/lighter = 3, + /obj/item/storage/box/matches = 3, + /obj/item/reagent_containers/syringe/contraband/space_drugs = 1, + /obj/item/reagent_containers/syringe/contraband/krokodil = 1, + /obj/item/reagent_containers/syringe/contraband/crank = 1, + /obj/item/reagent_containers/syringe/contraband/methamphetamine = 1, + /obj/item/reagent_containers/syringe/contraband/bath_salts = 1, + /obj/item/reagent_containers/syringe/contraband/fentanyl = 1, + /obj/item/reagent_containers/syringe/contraband/morphine = 1, + /obj/item/storage/pill_bottle/happy = 1, + /obj/item/storage/pill_bottle/lsd = 1, + /obj/item/storage/pill_bottle/psicodine = 1, + /obj/item/reagent_containers/food/drinks/beer = 4, + /obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/paper/fluff/jobs/prisoner/letter = 1, + /obj/item/grenade/smokebomb = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/tailclub = 1, //want to buy makeshift wooden club sprite + /obj/item/kitchen/knife/shiv = 4, + /obj/item/kitchen/knife/shiv/carrot = 1, + /obj/item/kitchen/knife = 1, + /obj/item/storage/wallet/random = 1, + /obj/item/pda = 1 + ) /obj/effect/spawner/lootdrop/gambling name = "gambling valuables spawner" @@ -169,7 +212,7 @@ ) /obj/effect/spawner/lootdrop/organ_spawner - name = "organ spawner" + name = "ayylien organ spawner" loot = list( /obj/item/organ/heart/gland/electric = 3, /obj/item/organ/heart/gland/trauma = 4, @@ -185,6 +228,28 @@ /obj/item/organ/regenerative_core = 2) lootcount = 3 +/obj/effect/spawner/lootdrop/memeorgans + name = "meme organ spawner" + loot = list( + /obj/item/organ/ears/penguin, + /obj/item/organ/ears/cat, + /obj/item/organ/eyes/moth, + /obj/item/organ/eyes/snail, + /obj/item/organ/tongue/bone, + /obj/item/organ/tongue/fly, + /obj/item/organ/tongue/snail, + /obj/item/organ/tongue/lizard, + /obj/item/organ/tongue/alien, + /obj/item/organ/tongue/ethereal, + /obj/item/organ/tongue/robot, + /obj/item/organ/tongue/zombie, + /obj/item/organ/appendix, + /obj/item/organ/liver/fly, + /obj/item/organ/lungs/plasmaman, + /obj/item/organ/tail/cat, + /obj/item/organ/tail/lizard) + lootcount = 5 + /obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner name = "2% chance xeno egg spawner" loot = list( @@ -262,7 +327,8 @@ /obj/item/aiModule/core/full/balance, /obj/item/aiModule/core/full/tyrant, /obj/item/aiModule/core/full/thermurderdynamic, - /obj/item/aiModule/core/full/damaged + /obj/item/aiModule/core/full/damaged, + /obj/item/aiModule/reset/purge ) // Tech storage circuit board spawners diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index f9f9c24f664..a49355e9a74 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -461,6 +461,7 @@ icon_state = "" layer = ABOVE_ALL_MOB_LAYER anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/status = 0 var/delay = 0 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 3ba4df22b61..71005eae75c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -10,6 +10,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item name = "item" icon = 'icons/obj/items_and_weapons.dmi' + blocks_emissive = EMISSIVE_BLOCK_GENERIC ///icon state name for inhand overlays var/item_state = null ///Icon file for left hand inhand overlays @@ -477,14 +478,17 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(usr.get_active_held_item() == null) // Let me know if this has any problems -Yota usr.UnarmedAttack(src) -//This proc is executed when someone clicks the on-screen UI button. -//The default action is attack_self(). -//Checks before we get to here are: mob is alive, mob is not restrained, stunned, asleep, resting, laying, item is on the mob. +/** + *This proc is executed when someone clicks the on-screen UI button. + *The default action is attack_self(). + *Checks before we get to here are: mob is alive, mob is not restrained, stunned, asleep, resting, laying, item is on the mob. + */ /obj/item/proc/ui_action_click(mob/user, actiontype) attack_self(user) -/obj/item/proc/IsReflect(var/def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit - return 0 +///This proc determines if and at what an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit +/obj/item/proc/IsReflect(var/def_zone) + return FALSE /obj/item/proc/eyestab(mob/living/carbon/M, mob/living/carbon/user) @@ -515,11 +519,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb user.do_attack_animation(M) if(M != user) - M.visible_message("[user] has stabbed [M] in the eye with [src]!", \ + M.visible_message("[user] stabs [M] in the eye with [src]!", \ "[user] stabs you in the eye with [src]!") else user.visible_message( \ - "[user] has stabbed [user.p_them()]self in the eyes with [src]!", \ + "[user] stabs [user.p_them()]self in the eyes with [src]!", \ "You stab yourself in the eyes with [src]!" \ ) if(is_human_victim) @@ -780,8 +784,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/mob/living/carbon/human/H = user skill_modifier = H.mind.get_skill_modifier(/datum/skill/mining, SKILL_SPEED_MODIFIER) + if(H.mind.get_skill_level(/datum/skill/mining) >= SKILL_LEVEL_JOURNEYMAN && prob(H.mind.get_skill_modifier(/datum/skill/mining, SKILL_PROBS_MODIFIER))) // we check if the skill level is greater than Journeyman and then we check for the probality for that specific level. + mineral_scan_pulse(get_turf(H), SKILL_LEVEL_JOURNEYMAN - 2) //SKILL_LEVEL_JOURNEYMAN = 3 So to get range of 1+ we have to subtract 2 from it,. + delay *= toolspeed * skill_modifier + // Play tool sound at the beginning of tool usage. play_tool_sound(target, volume) @@ -815,7 +823,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb // Called before use_tool if there is a delay, or by use_tool if there isn't. // Only ever used by welding tools and stacks, so it's not added on any other use_tool checks. /obj/item/proc/tool_start_check(mob/living/user, amount=0) - return tool_use_check(user, amount) + . = tool_use_check(user, amount) + if(.) + SEND_SIGNAL(src, COMSIG_TOOL_START_USE, user) // A check called by tool_start_check once, and by use_tool on every tick of delay. /obj/item/proc/tool_use_check(mob/living/user, amount) @@ -836,9 +846,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb playsound(target, played_sound, volume, TRUE) -// Used in a callback that is passed by use_tool into do_after call. Do not override, do not call manually. +/// Used in a callback that is passed by use_tool into do_after call. Do not override, do not call manually. /obj/item/proc/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - return tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) + SHOULD_NOT_OVERRIDE(TRUE) + . = tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) + if(.) + SEND_SIGNAL(src, COMSIG_TOOL_IN_USE, user) // Returns a numeric value for sorting items used as parts in machines, so they can be replaced by the rped /obj/item/proc/get_part_rating() @@ -871,15 +884,25 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb return /obj/item/proc/canStrip(mob/stripper, mob/owner) + SHOULD_BE_PURE(TRUE) return !HAS_TRAIT(src, TRAIT_NODROP) /obj/item/proc/doStrip(mob/stripper, mob/owner) return owner.dropItemToGround(src) /** - * Does the current embedding var meet the criteria for being harmless? Namely, does it have a pain multiplier and jostle pain mult of 0? If so, return true. - * + * Does the current embedding var meet the criteria for being harmless? Namely, does it explicitly define the pain multiplier and jostle pain mult to be 0? If so, return true. */ /obj/item/proc/is_embed_harmless() if(embedding) - return (!embedding["pain_mult"] && !embedding["jostle_pain_mult"]) + return !isnull(embedding["pain_mult"]) && !isnull(embedding["jostle_pain_mult"]) && embedding["pain_mult"] == 0 && embedding["jostle_pain_mult"] == 0 + +///Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else. +/obj/item/proc/on_thrown(mob/living/carbon/user, atom/target) + if((item_flags & ABSTRACT) || HAS_TRAIT(src, TRAIT_NODROP)) + return + user.dropItemToGround(src, silent = TRUE) + if(throwforce && HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You set [src] down gently on the ground.") + return + return src diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 0a4b4cd2f1c..5c0d8f57e4f 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -50,11 +50,11 @@ RLD /obj/item/construction/examine(mob/user) . = ..() - . += "\A [src]. It currently holds [matter]/[max_matter] matter-units." + . += "It currently holds [matter]/[max_matter] matter-units." if(upgrade & RCD_UPGRADE_SILO_LINK) - . += "\A [src]. Remote storage link state: [silo_link ? "[silo_mats.on_hold() ? "ON HOLD" : "ON"]" : "OFF"]." - if(silo_link && !silo_mats.on_hold()) - . += "\A [src]. Remote connection have iron in equivalent to [silo_mats.mat_container.get_material_amount(/datum/material/iron)/500] rcd units." // 1 matter for 1 floortile, as 4 tiles are produced from 1 metal + . += "Remote storage link state: [silo_link ? "[silo_mats.on_hold() ? "ON HOLD" : "ON"]" : "OFF"]." + if(silo_link && silo_mats.mat_container && !silo_mats.on_hold()) + . += "Remote connection has iron in equivalent to [silo_mats.mat_container.get_material_amount(/datum/material/iron)/500] RCD unit\s." //1 matter for 1 floor tile, as 4 tiles are produced from 1 metal /obj/item/construction/Destroy() QDEL_NULL(spark_system) @@ -137,17 +137,20 @@ RLD if(user) to_chat(user, "Mineral access is on hold, please contact the quartermaster.") return FALSE + if(!silo_mats.mat_container) + to_chat(user, "No silo link detected. Connect to silo via multitool.") + return FALSE if(!silo_mats.mat_container.has_materials(list(/datum/material/iron = 500), amount)) if(user) to_chat(user, no_ammo_message) return FALSE silo_mats.mat_container.use_materials(list(/datum/material/iron = 500), amount) - silo_mats.silo_log(src, "consume", -amount, "build", list(/datum/material/iron = 500)) + silo_mats.silo_log(src, "consume", -amount, "build", list(GLOB.materials_list["iron"] = 500)) return TRUE /obj/item/construction/proc/checkResource(amount, mob/user) - if(!silo_mats || !silo_link) + if(!silo_link || !silo_mats || !silo_mats.mat_container) . = matter >= amount else if(silo_mats.on_hold()) @@ -231,6 +234,9 @@ RLD /obj/item/construction/rcd/proc/toggle_silo_link(mob/user) if(silo_mats) + if(!silo_mats.mat_container) + to_chat(user, "No silo link detected. Connect to silo via multitool.") + return FALSE silo_link = !silo_link to_chat(user, "You change \the [src]'s storage link state: [silo_link ? "ON" : "OFF"].") else diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index 4d50659f9da..96a762ecf89 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -1,4 +1,4 @@ -/obj/item/twohanded/rcl +/obj/item/rcl name = "rapid pipe cleaner layer" desc = "A device used to rapidly deploy pipe cleaners. It has screws on the side which can be removed to slide off the pipe cleaners. Do not use without insulation!" icon = 'icons/obj/tools.dmi' @@ -23,11 +23,25 @@ var/datum/radial_menu/persistent/wiring_gui_menu var/mob/listeningTo -/obj/item/twohanded/rcl/ComponentInitialize() +/obj/item/rcl/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/rcl/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) + AddComponent(/datum/component/two_handed) + +/// triggered on wield of two handed item +/obj/item/rcl/proc/on_wield(obj/item/source, mob/user) + active = TRUE + +/// triggered on unwield of two handed item +/obj/item/rcl/proc/on_unwield(obj/item/source, mob/user) + active = FALSE -/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user) +/obj/item/rcl/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/stack/pipe_cleaner_coil)) var/obj/item/stack/pipe_cleaner_coil/C = W @@ -82,19 +96,19 @@ else ..() -/obj/item/twohanded/rcl/examine(mob/user) +/obj/item/rcl/examine(mob/user) . = ..() if(loaded) . += "It contains [loaded.amount]/[max_amount] pipe cleaners." -/obj/item/twohanded/rcl/Destroy() +/obj/item/rcl/Destroy() QDEL_NULL(loaded) last = null listeningTo = null QDEL_NULL(wiring_gui_menu) return ..() -/obj/item/twohanded/rcl/update_icon_state() +/obj/item/rcl/update_icon_state() if(!loaded) icon_state = "rcl-0" item_state = "rcl-0" @@ -113,7 +127,7 @@ icon_state = "rcl-0" item_state = "rcl-0" -/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1) +/obj/item/rcl/proc/is_empty(mob/user, loud = 1) update_icon() if(!loaded || !loaded.amount) if(loud) @@ -122,26 +136,23 @@ QDEL_NULL(loaded) loaded = null QDEL_NULL(wiring_gui_menu) - unwield(user) - active = wielded return TRUE return FALSE -/obj/item/twohanded/rcl/pickup(mob/user) +/obj/item/rcl/pickup(mob/user) ..() getMobhook(user) -/obj/item/twohanded/rcl/dropped(mob/wearer) +/obj/item/rcl/dropped(mob/wearer) ..() UnregisterSignal(wearer, COMSIG_MOVABLE_MOVED) listeningTo = null last = null QDEL_NULL(wiring_gui_menu) -/obj/item/twohanded/rcl/attack_self(mob/user) +/obj/item/rcl/attack_self(mob/user) ..() - active = wielded if(!active) last = null else if(!last) @@ -150,7 +161,7 @@ last = C break -/obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook) +/obj/item/rcl/proc/getMobhook(mob/to_hook) if(listeningTo == to_hook) return if(listeningTo) @@ -158,7 +169,7 @@ RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger) listeningTo = to_hook -/obj/item/twohanded/rcl/proc/trigger(mob/user) +/obj/item/rcl/proc/trigger(mob/user) if(active) layCable(user) if(wiring_gui_menu) //update the wire options as you move @@ -166,7 +177,7 @@ //previous contents of trigger(), lays pipe_cleaner each time the player moves -/obj/item/twohanded/rcl/proc/layCable(mob/user) +/obj/item/rcl/proc/layCable(mob/user) if(!isturf(user.loc)) return if(is_empty(user, 0)) @@ -200,7 +211,7 @@ //searches the current tile for a stub pipe_cleaner of the same colour -/obj/item/twohanded/rcl/proc/findLinkingCable(mob/user) +/obj/item/rcl/proc/findLinkingCable(mob/user) var/turf/T if(!isturf(user.loc)) return @@ -216,10 +227,8 @@ continue if(C.d1 == 0) return C - return - -/obj/item/twohanded/rcl/proc/wiringGuiGenerateChoices(mob/user) +/obj/item/rcl/proc/wiringGuiGenerateChoices(mob/user) var/fromdir = 0 var/obj/structure/pipe_cleaner/linkingCable = findLinkingCable(user) if(linkingCable) @@ -236,12 +245,12 @@ wiredirs[icondir] = img return wiredirs -/obj/item/twohanded/rcl/proc/showWiringGui(mob/user) +/obj/item/rcl/proc/showWiringGui(mob/user) var/list/choices = wiringGuiGenerateChoices(user) wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, .proc/wiringGuiReact, user), radius = 42) -/obj/item/twohanded/rcl/proc/wiringGuiUpdate(mob/user) +/obj/item/rcl/proc/wiringGuiUpdate(mob/user) if(!wiring_gui_menu) return @@ -250,9 +259,8 @@ wiring_gui_menu.change_choices(choices,FALSE) - //Callback used to respond to interactions with the wiring menu -/obj/item/twohanded/rcl/proc/wiringGuiReact(mob/living/user,choice) +/obj/item/rcl/proc/wiringGuiReact(mob/living/user,choice) if(!choice) //close on a null choice (the center button) QDEL_NULL(wiring_gui_menu) return @@ -283,19 +291,18 @@ wiringGuiUpdate(user) - -/obj/item/twohanded/rcl/pre_loaded/Initialize() //Comes preloaded with pipe_cleaner, for testing stuff +/obj/item/rcl/pre_loaded/Initialize() //Comes preloaded with pipe_cleaner, for testing stuff . = ..() loaded = new() loaded.max_amount = max_amount loaded.amount = max_amount update_icon() -/obj/item/twohanded/rcl/Initialize() +/obj/item/rcl/Initialize() . = ..() update_icon() -/obj/item/twohanded/rcl/ui_action_click(mob/user, action) +/obj/item/rcl/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/rcl_col)) current_color_index++; if (current_color_index > colors.len) @@ -312,13 +319,13 @@ else //open the menu showWiringGui(user) -/obj/item/twohanded/rcl/ghetto +/obj/item/rcl/ghetto actions_types = list() max_amount = 30 name = "makeshift rapid pipe cleaner layer" ghetto = TRUE -/obj/item/twohanded/rcl/ghetto/update_icon_state() +/obj/item/rcl/ghetto/update_icon_state() if(!loaded) icon_state = "rclg-0" item_state = "rclg-0" diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index b9db7cca96c..5bf569d9cb0 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -15,6 +15,24 @@ usesound = 'sound/effects/spray2.ogg' var/obj/item/toner/ink = null + /// Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock + var/list/available_paint_jobs = list( + "Public" = /obj/machinery/door/airlock/public, + "Engineering" = /obj/machinery/door/airlock/engineering, + "Atmospherics" = /obj/machinery/door/airlock/atmos, + "Security" = /obj/machinery/door/airlock/security, + "Command" = /obj/machinery/door/airlock/command, + "Medical" = /obj/machinery/door/airlock/medical, + "Research" = /obj/machinery/door/airlock/research, + "Freezer" = /obj/machinery/door/airlock/freezer, + "Science" = /obj/machinery/door/airlock/science, + "Mining" = /obj/machinery/door/airlock/mining, + "Maintenance" = /obj/machinery/door/airlock/maintenance, + "External" = /obj/machinery/door/airlock/external, + "External Maintenance"= /obj/machinery/door/airlock/maintenance/external, + "Virology" = /obj/machinery/door/airlock/virology, + "Standard" = /obj/machinery/door/airlock + ) /obj/item/airlock_painter/Initialize() . = ..() diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm new file mode 100644 index 00000000000..347f0ad3a79 --- /dev/null +++ b/code/game/objects/items/binoculars.dm @@ -0,0 +1,65 @@ +/obj/item/binoculars + name = "binoculars" + desc = "Used for long-distance surveillance." + item_state = "binoculars" + icon_state = "binoculars" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + var/mob/listeningTo + var/zoom_out_amt = 6 + var/zoom_amt = 10 + +/obj/item/binoculars/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/binoculars/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12) + +/obj/item/binoculars/Destroy() + listeningTo = null + return ..() + +/obj/item/binoculars/proc/on_wield(obj/item/source, mob/user) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield) + listeningTo = user + user.visible_message("[user] holds [src] up to [user.p_their()] eyes.", "You hold [src] up to your eyes.") + item_state = "binoculars_wielded" + user.regenerate_icons() + if(!user?.client) + return + var/client/C = user.client + var/_x = 0 + var/_y = 0 + switch(user.dir) + if(NORTH) + _y = zoom_amt + if(EAST) + _x = zoom_amt + if(SOUTH) + _y = -zoom_amt + if(WEST) + _x = -zoom_amt + C.change_view(world.view + zoom_out_amt) + C.pixel_x = world.icon_size*_x + C.pixel_y = world.icon_size*_y +/obj/item/binoculars/proc/on_unwield(obj/item/source, mob/user) + unwield(user) + +/obj/item/binoculars/proc/unwield(mob/user) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + listeningTo = null + user.visible_message("[user] lowers [src].", "You lower [src].") + item_state = "binoculars" + user.regenerate_icons() + if(user && user.client) + user.regenerate_icons() + var/client/C = user.client + C.change_view(CONFIG_GET(string/default_view)) + user.client.pixel_x = 0 + user.client.pixel_y = 0 diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm new file mode 100644 index 00000000000..724fa473fa1 --- /dev/null +++ b/code/game/objects/items/broom.dm @@ -0,0 +1,77 @@ +/obj/item/pushbroom + name = "push broom" + desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage." + icon = 'icons/obj/janitor.dmi' + icon_state = "broom0" + lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' + force = 8 + throwforce = 10 + throw_speed = 3 + throw_range = 7 + w_class = WEIGHT_CLASS_NORMAL + attack_verb = list("swept", "brushed off", "bludgeoned", "whacked") + resistance_flags = FLAMMABLE + +/obj/item/pushbroom/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/pushbroom/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12, icon_wielded="broom1") + +/obj/item/pushbroom/update_icon_state() + icon_state = "broom0" + +/// triggered on wield of two handed item +/obj/item/pushbroom/proc/on_wield(obj/item/source, mob/user) + to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.") + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep) + +/// triggered on unwield of two handed item +/obj/item/pushbroom/proc/on_unwield(obj/item/source, mob/user) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + +/obj/item/pushbroom/afterattack(atom/A, mob/user, proximity) + . = ..() + if(!proximity) + return + sweep(user, A, FALSE) + +/obj/item/pushbroom/proc/sweep(mob/user, atom/A, moving = TRUE) + var/turf/target + if (!moving) + if (isturf(A)) + target = A + else + target = A.loc + else + target = user.loc + if (!isturf(target)) + return + if (locate(/obj/structure/table) in target.contents) + return + var/i = 0 + var/turf/target_turf = get_step(target, user.dir) + var/obj/machinery/disposal/bin/target_bin = locate(/obj/machinery/disposal/bin) in target_turf.contents + for(var/obj/item/garbage in target.contents) + if(!garbage.anchored) + if (target_bin) + garbage.forceMove(target_bin) + else + garbage.Move(target_turf, user.dir) + i++ + if(i > 19) + break + if(i > 0) + if (target_bin) + target_bin.update_icon() + to_chat(user, "You sweep the pile of garbage into [target_bin].") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1) + +/obj/item/pushbroom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta + J.put_in_cart(src, user) + J.mybroom=src + J.update_icon() diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index f3f8a4a4220..020c60b99bf 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -181,7 +181,8 @@ return 1 /obj/item/cardboard_cutout/setDir(newdir) - dir = SOUTH + newdir = SOUTH + return ..() /obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed deceptive = TRUE diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 3eccd46c765..d624f16563e 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -461,6 +461,26 @@ update_label() access = list(ACCESS_SYNDICATE) uses_overlays = FALSE +/obj/item/card/id/syndicate_command/crew_id + name = "syndicate ID card" + id_type_name = "syndicate ID card" + desc = "An ID straight from the Syndicate." + registered_name = "Syndicate" + assignment = "Syndicate Operative" + icon_state = "syndie" + access = list(ACCESS_SYNDICATE) + uses_overlays = FALSE + +/obj/item/card/id/syndicate_command/captain_id + name = "syndicate captain ID card" + id_type_name = "syndicate captain ID card" + desc = "An ID straight from the Syndicate." + registered_name = "Syndicate" + assignment = "Syndicate Ship Captain" + icon_state = "syndie" + access = list(ACCESS_SYNDICATE) + uses_overlays = FALSE + /obj/item/card/id/captains_spare name = "captain's spare ID" id_type_name = "captain's spare ID" diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm new file mode 100644 index 00000000000..2a4511989d6 --- /dev/null +++ b/code/game/objects/items/chainsaw.dm @@ -0,0 +1,91 @@ + +// CHAINSAW +/obj/item/chainsaw + name = "chainsaw" + desc = "A versatile power tool. Useful for limbing trees and delimbing humans." + icon_state = "chainsaw_off" + lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' + flags_1 = CONDUCT_1 + force = 13 + var/force_on = 24 + w_class = WEIGHT_CLASS_HUGE + throwforce = 13 + throw_speed = 2 + throw_range = 4 + custom_materials = list(/datum/material/iron=13000) + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = "swing_hit" + sharpness = IS_SHARP + actions_types = list(/datum/action/item_action/startchainsaw) + tool_behaviour = TOOL_SAW + toolspeed = 0.5 + var/on = FALSE + var/wielded = FALSE // track wielded status on item + +/obj/item/chainsaw/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/chainsaw/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE) + AddComponent(/datum/component/two_handed, require_twohands=TRUE) + +/// triggered on wield of two handed item +/obj/item/chainsaw/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/chainsaw/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/chainsaw/suicide_act(mob/living/carbon/user) + if(on) + user.visible_message("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(src, 'sound/weapons/chainsawhit.ogg', 100, TRUE) + var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) + if(myhead) + myhead.dismember() + else + user.visible_message("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(src, 'sound/weapons/genhit1.ogg', 100, TRUE) + return(BRUTELOSS) + +/obj/item/chainsaw/attack_self(mob/user) + on = !on + to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]") + force = on ? force_on : initial(force) + throwforce = on ? force_on : initial(force) + icon_state = "chainsaw_[on ? "on" : "off"]" + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) + butchering.butchering_enabled = on + + if(on) + hitsound = 'sound/weapons/chainsawhit.ogg' + else + hitsound = "swing_hit" + + if(src == user.get_active_held_item()) //update inhands + user.update_inv_hands() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/chainsaw/get_dismemberment_chance() + if(wielded) + . = ..() + +/obj/item/chainsaw/doomslayer + name = "THE GREAT COMMUNICATOR" + desc = "VRRRRRRR!!!" + armour_penetration = 100 + force_on = 30 + +/obj/item/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("Ranged attacks just make [owner] angrier!") + playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) + return 1 + return 0 diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index bc0b228790e..40721defdb4 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -197,13 +197,13 @@ /obj/item/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) - if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement) + if(build_path == /obj/machinery/computer/bookmanagement) name = "Library Visitor Console (Computer Board)" build_path = /obj/machinery/computer/libraryconsole to_chat(user, "Defaulting access protocols.") else name = "Book Inventory Management Console (Computer Board)" - build_path = /obj/machinery/computer/libraryconsole/bookmanagement + build_path = /obj/machinery/computer/bookmanagement to_chat(user, "Access protocols successfully updated.") else return ..() diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 10008e451d2..a13fcb96564 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1177,7 +1177,13 @@ WaspStation End */ build_path = /obj/machinery/rnd/production/techfab/department/cargo //Misc - +/obj/item/circuitboard/machine/sheetifier + name = "Sheet-meister 2000 (Machine Board)" + icon_state = "supply" + build_path = /obj/machinery/sheetifier + req_components = list( + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/matter_bin = 2) /obj/item/circuitboard/machine/abductor name = "alien board (Report This)" diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 98a08fedfe7..52d043d441c 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -188,6 +188,9 @@ if(!get_location_accessible(H, location)) to_chat(user, "The headgear is in the way!") return + if(HAS_TRAIT(H, TRAIT_BALD)) + to_chat(H, "[H] is just way too bald. Like, really really bald.") + return user.visible_message("[user] tries to change [H]'s hairstyle using [src].", "You try to change [H]'s hairstyle using [src].") if(new_style && do_after(user, 60, target = H)) user.visible_message("[user] successfully changes [H]'s hairstyle using [src].", "You successfully change [H]'s hairstyle using [src].") diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index b89a60a326d..fe97b402b55 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -317,6 +317,13 @@ else if(drawing in graffiti|oriented) temp = "graffiti" + var/gang_mode + if(user.mind) + gang_mode = user.mind.has_antag_datum(/datum/antagonist/gang) + + if(gang_mode && (!can_claim_for_gang(user, target))) + return + var/graf_rot if(drawing in oriented) @@ -349,7 +356,7 @@ if(paint_mode == PAINT_LARGE_HORIZONTAL) wait_time *= 3 - if(!instant) + if(gang_mode || !instant) if(!do_after(user, 50, target = target)) return @@ -361,28 +368,34 @@ if(actually_paints) var/obj/effect/decal/cleanable/crayon/C - switch(paint_mode) - if(PAINT_NORMAL) - C = new(target, paint_color, drawing, temp, graf_rot) - C.pixel_x = clickx - C.pixel_y = clicky - affected_turfs += target - if(PAINT_LARGE_HORIZONTAL) - var/turf/left = locate(target.x-1,target.y,target.z) - var/turf/right = locate(target.x+1,target.y,target.z) - if(isValidSurface(left) && isValidSurface(right)) - C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON) - affected_turfs += left - affected_turfs += right - affected_turfs += target - else - to_chat(user, "There isn't enough space to paint!") - return - C.add_hiddenprint(user) - if(istagger) - C.AddComponent(/datum/component/art, GOOD_ART) + if(gang_mode) + if(!can_claim_for_gang(user, target)) + return + tag_for_gang(user, target, gang_mode) + affected_turfs += target else - C.AddComponent(/datum/component/art, BAD_ART) + switch(paint_mode) + if(PAINT_NORMAL) + C = new(target, paint_color, drawing, temp, graf_rot) + C.pixel_x = clickx + C.pixel_y = clicky + affected_turfs += target + if(PAINT_LARGE_HORIZONTAL) + var/turf/left = locate(target.x-1,target.y,target.z) + var/turf/right = locate(target.x+1,target.y,target.z) + if(isValidSurface(left) && isValidSurface(right)) + C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON) + affected_turfs += left + affected_turfs += right + affected_turfs += target + else + to_chat(user, "There isn't enough space to paint!") + return + C.add_hiddenprint(user) + if(istagger) + C.AddComponent(/datum/component/art, GOOD_ART) + else + C.AddComponent(/datum/component/art, BAD_ART) if(!instant) to_chat(user, "You finish drawing \the [temp].") @@ -428,6 +441,46 @@ else ..() +/obj/item/toy/crayon/proc/can_claim_for_gang(mob/user, atom/target) + var/area/A = get_area(target) + if(!A || (!is_station_level(A.z))) + to_chat(user, "[A] is unsuitable for tagging.") + return FALSE + + var/spraying_over = FALSE + for(var/obj/effect/decal/cleanable/crayon/gang/G in target) + spraying_over = TRUE + + for(var/obj/machinery/power/apc in target) + to_chat(user, "You can't tag an APC.") + return FALSE + + var/occupying_gang = territory_claimed(A, user) + if(occupying_gang && !spraying_over) + to_chat(user, "[A] has already been tagged by a gang! You must find and spray over the old tag first!") + return FALSE + + // stolen from oldgang lmao + return TRUE + +/obj/item/toy/crayon/proc/tag_for_gang(mob/user, atom/target, datum/antagonist/gang/user_gang) + for(var/obj/effect/decal/cleanable/crayon/old_marking in target) + qdel(old_marking) + + var/area/territory = get_area(target) + + var/obj/effect/decal/cleanable/crayon/gang/tag = new /obj/effect/decal/cleanable/crayon/gang(target) + tag.my_gang = user_gang.my_gang + tag.icon_state = "[user_gang.gang_id]_tag" + tag.name = "[tag.my_gang.name] gang tag" + tag.desc = "Looks like someone's claimed this area for [tag.my_gang.name]." + to_chat(user, "You tagged [territory] for [tag.my_gang.name]!") + +/obj/item/toy/crayon/proc/territory_claimed(area/territory, mob/user) + for(var/obj/effect/decal/cleanable/crayon/gang/G in GLOB.gang_tags) + if(get_area(G) == territory) + return TRUE + /obj/item/toy/crayon/red icon_state = "crayonred" paint_color = "#DA0000" @@ -665,7 +718,7 @@ return - if(isobj(target)) + if(isobj(target) && !istype(target, /obj/effect/decal/cleanable/crayon/gang)) if(actually_paints) if(color_hex2num(paint_color) < 350 && !istype(target, /obj/structure/window) && !istype(target, /obj/effect/decal/cleanable/crayon)) //Colors too dark are rejected to_chat(usr, "A color that dark on an object like this? Surely not...") diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 52757dedaac..bdd99549d69 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -16,11 +16,11 @@ actions_types = list(/datum/action/item_action/toggle_paddles) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - var/obj/item/twohanded/shockpaddles/paddle_type = /obj/item/twohanded/shockpaddles + var/obj/item/shockpaddles/paddle_type = /obj/item/shockpaddles var/on = FALSE //if the paddles are equipped (1) or on the defib (0) var/safety = TRUE //if you can zap people with the defibs on harm mode var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise - var/obj/item/twohanded/shockpaddles/paddles + var/obj/item/shockpaddles/paddles var/obj/item/stock_parts/cell/high/cell var/combat = FALSE //if true, revive through hardsuits, allow for combat shocking var/cooldown_duration = 5 SECONDS//how long does it take to recharge @@ -113,7 +113,6 @@ /obj/item/defibrillator/attackby(obj/item/W, mob/user, params) if(W == paddles) - paddles.unwield() toggle_paddles() else if(istype(W, /obj/item/stock_parts/cell)) var/obj/item/stock_parts/cell/C = W @@ -178,7 +177,6 @@ return else //Remove from their hands and back onto the defib unit - paddles.unwield() remove_paddles(user) update_power() @@ -262,7 +260,7 @@ combat = TRUE safety = FALSE cooldown_duration = 2.5 SECONDS - paddle_type = /obj/item/twohanded/shockpaddles/syndicate + paddle_type = /obj/item/shockpaddles/syndicate /obj/item/defibrillator/compact/combat/loaded/Initialize() . = ..() @@ -271,7 +269,6 @@ /obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params) if(W == paddles) - paddles.unwield() toggle_paddles() return @@ -280,11 +277,11 @@ desc = "A belt-equipped state-of-the-art defibrillator. Can revive through spacesuits, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or agressive manner." icon_state = "defibnt" //needs defib inhand sprites item_state = "defibnt" - paddle_type = /obj/item/twohanded/shockpaddles/syndicate/nanotrasen + paddle_type = /obj/item/shockpaddles/syndicate/nanotrasen //paddles -/obj/item/twohanded/shockpaddles +/obj/item/shockpaddles name = "defibrillator paddles" desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks." icon = 'icons/obj/defib.dmi' @@ -305,32 +302,42 @@ var/req_defib = TRUE var/combat = FALSE //If it penetrates armor and gives additional functionality var/base_icon_state = "defibpaddles" + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/shockpaddles/ComponentInitialize() +/obj/item/shockpaddles/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) + AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12) -/obj/item/twohanded/shockpaddles/Destroy() +/// triggered on wield of two handed item +/obj/item/shockpaddles/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/shockpaddles/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/shockpaddles/Destroy() defib = null return ..() -/obj/item/twohanded/shockpaddles/equipped(mob/user, slot) +/obj/item/shockpaddles/equipped(mob/user, slot) . = ..() if(!req_defib) return RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range) -/obj/item/twohanded/shockpaddles/Moved() +/obj/item/shockpaddles/Moved() . = ..() check_range() -/obj/item/twohanded/shockpaddles/fire_act(exposed_temperature, exposed_volume) +/obj/item/shockpaddles/fire_act(exposed_temperature, exposed_volume) . = ..() if((req_defib && defib) && loc != defib) defib.fire_act(exposed_temperature, exposed_volume) -/obj/item/twohanded/shockpaddles/proc/check_range() +/obj/item/shockpaddles/proc/check_range() if(!req_defib || !defib) return if(!in_range(src,defib)) @@ -341,7 +348,7 @@ visible_message("[src] snap back into [defib].") snap_back() -/obj/item/twohanded/shockpaddles/proc/recharge(var/time) +/obj/item/shockpaddles/proc/recharge(var/time) if(req_defib || !time) return cooldown = TRUE @@ -353,9 +360,11 @@ cooldown = FALSE update_icon() -/obj/item/twohanded/shockpaddles/Initialize() +/obj/item/shockpaddles/Initialize() . = ..() ADD_TRAIT(src, TRAIT_NO_STORAGE_INSERT, GENERIC_ITEM_TRAIT) //stops shockpaddles from being inserted in BoH + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) if(!req_defib) return //If it doesn't need a defib, just say it exists if (!loc || !istype(loc, /obj/item/defibrillator)) //To avoid weird issues from admin spawns @@ -364,41 +373,37 @@ busy = FALSE update_icon() -/obj/item/twohanded/shockpaddles/update_icon_state() - icon_state = "[base_icon_state][wielded]" - item_state = icon_state - if(cooldown) - icon_state = "[base_icon_state][wielded]_cooldown" - -/obj/item/twohanded/shockpaddles/suicide_act(mob/user) +/obj/item/shockpaddles/suicide_act(mob/user) user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!") if(req_defib) defib.deductcharge(revivecost) playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1) return (OXYLOSS) -/obj/item/twohanded/shockpaddles/dropped(mob/user) +/obj/item/shockpaddles/update_icon_state() + icon_state = "[base_icon_state][wielded]" + item_state = icon_state + if(cooldown) + icon_state = "[base_icon_state][wielded]_cooldown" + +/obj/item/shockpaddles/dropped(mob/user) if(!req_defib) return ..() if(user) UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - var/obj/item/twohanded/offhand/O = user.get_inactive_held_item() - if(istype(O)) - O.unwield() if(user != loc) to_chat(user, "The paddles snap back into the main unit.") snap_back() - return unwield(user) + return -/obj/item/twohanded/shockpaddles/proc/snap_back() +/obj/item/shockpaddles/proc/snap_back() if(!defib) return defib.on = FALSE forceMove(defib) defib.update_power() -/obj/item/twohanded/shockpaddles/attack(mob/M, mob/user) - +/obj/item/shockpaddles/attack(mob/M, mob/user) if(busy) return if(req_defib && !defib.powered) @@ -445,21 +450,21 @@ do_help(H, user) -/obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H) +/obj/item/shockpaddles/proc/shock_touching(dmg, mob/H) if(isliving(H.pulledby)) //CLEAR! var/mob/living/M = H.pulledby if(M.electrocute_act(30, H)) M.visible_message("[M] is electrocuted by [M.p_their()] contact with [H]!") M.emote("scream") -/obj/item/twohanded/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user) +/obj/item/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user) if(req_defib && defib.safety) return if(!req_defib && !combat) return busy = TRUE - M.visible_message("[user] has touched [M] with [src]!", \ - "[user] has touched [M] with [src]!") + M.visible_message("[user] touches [M] with [src]!", \ + "[user] touches [M] with [src]!") M.adjustStaminaLoss(60) M.Knockdown(75) M.Jitter(50) @@ -478,7 +483,7 @@ else recharge(60) -/obj/item/twohanded/shockpaddles/proc/do_harm(mob/living/carbon/H, mob/living/user) +/obj/item/shockpaddles/proc/do_harm(mob/living/carbon/H, mob/living/user) if(req_defib && defib.safety) return if(!req_defib && !combat) @@ -533,7 +538,7 @@ busy = FALSE update_icon() -/obj/item/twohanded/shockpaddles/proc/do_help(mob/living/carbon/H, mob/living/user) +/obj/item/shockpaddles/proc/do_help(mob/living/carbon/H, mob/living/user) user.visible_message("[user] begins to place [src] on [H]'s chest.", "You begin to place [src] on [H]'s chest...") busy = TRUE update_icon() @@ -630,14 +635,14 @@ busy = FALSE update_icon() -/obj/item/twohanded/shockpaddles/cyborg +/obj/item/shockpaddles/cyborg name = "cyborg defibrillator paddles" icon = 'icons/obj/defib.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" req_defib = FALSE -/obj/item/twohanded/shockpaddles/cyborg/attack(mob/M, mob/user) +/obj/item/shockpaddles/cyborg/attack(mob/M, mob/user) if(iscyborg(user)) var/mob/living/silicon/robot/R = user if(R.emagged) @@ -649,7 +654,7 @@ . = ..() -/obj/item/twohanded/shockpaddles/syndicate +/obj/item/shockpaddles/syndicate name = "syndicate defibrillator paddles" desc = "A pair of paddles used to revive deceased operatives. They possess both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." combat = TRUE @@ -658,14 +663,14 @@ item_state = "syndiepaddles0" base_icon_state = "syndiepaddles" -/obj/item/twohanded/shockpaddles/syndicate/nanotrasen - name = "elite Nanotrasen defibrillator paddles" +/obj/item/shockpaddles/syndicate/nanotrasen + name = "elite nanotrasen defibrillator paddles" desc = "A pair of paddles used to revive deceased ERT members. They possess both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." icon_state = "ntpaddles0" item_state = "ntpaddles0" base_icon_state = "ntpaddles" -/obj/item/twohanded/shockpaddles/syndicate/cyborg +/obj/item/shockpaddles/syndicate/cyborg req_defib = FALSE #undef HALFWAYCRITDEATH diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index cdb9b3703ea..06b6fd8ea00 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -890,12 +890,12 @@ GLOBAL_LIST_EMPTY(PDAs) switch(scanmode) if(PDA_SCANNER_MEDICAL) - C.visible_message("[user] has analyzed [C]'s vitals!") + C.visible_message("[user] analyzes [C]'s vitals.") healthscan(user, C, 1) add_fingerprint(user) if(PDA_SCANNER_HALOGEN) - C.visible_message("[user] has analyzed [C]'s radiation levels!") + C.visible_message("[user] analyzes [C]'s radiation levels.") user.show_message("Analyzing Results for [C]:") if(C.radiation) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index a5ba39f1e77..912862d85b5 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -382,7 +382,7 @@ Code: if(active3 in GLOB.data_core.security) menu += "Criminal Status: [active3.fields["criminal"]]
" - menu += text("
\nMinor Crimes:") + menu += text("
\nCrimes:") menu +={"
CrimeDetailsAuthorTime Added
[c.crimeName] [c.crimeDetails] [c.author]
@@ -391,31 +391,13 @@ Code: "} - for(var/datum/data/crime/c in active3.fields["mi_crim"]) + for(var/datum/data/crime/c in active3.fields["crim"]) menu += "" menu += "" menu += "" menu += "" menu += "" menu += "
Author Time Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" - - menu += text("
\nMajor Crimes:") - - menu +={" - - - - - -"} - for(var/datum/data/crime/c in active3.fields["ma_crim"]) - menu += "" - menu += "" - menu += "" - menu += "" - menu += "" - menu += "
CrimeDetailsAuthorTime Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" - menu += "
\nImportant Notes:
" menu += "[active3.fields["notes"]]" else diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 94f8c3f0fcf..e6920d17fff 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -18,6 +18,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT + item_flags = NOBLUDGEON custom_materials = list(/datum/material/iron = 150, /datum/material/glass = 150) var/grace = RAD_GRACE_PERIOD diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index a7456e5b286..a188e804228 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -173,14 +173,14 @@ name = "trumpet" desc = "To announce the arrival of the king!" icon_state = "trumpet" - item_state = "trombone" + item_state = "trumpet" instrumentId = "trombone" /obj/item/instrument/trumpet/spectral name = "spectral trumpet" desc = "Things are about to get spooky!" - icon_state = "trumpet" - item_state = "trombone" + icon_state = "spectral_trumpet" + item_state = "spectral_trumpet" force = 0 instrumentId = "trombone" attack_verb = list("played","jazzed","trumpeted","mourned","dooted","spooked") diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index de808acbd90..5dd9c4db557 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -174,7 +174,7 @@ AddUses(new_bulbs) bulb_shards = bulb_shards % shards_required if(new_bulbs != 0) - to_chat(user, "\The [src] has fabricated a new bulb from the broken glass it has stored. It now has [uses] uses.") + to_chat(user, "\The [src] fabricates a new bulb from the broken glass it has stored. It now has [uses] uses.") playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE) return new_bulbs diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index 60fa1fbadb4..50b105220dd 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/puzzle_small.dmi' item_state = "flash" icon_state = "pressureplate" - level = 1 layer = LOW_OBJ_LAYER var/trigger_mob = TRUE var/trigger_item = FALSE @@ -30,8 +29,9 @@ sigdev = new sigdev.code = roundstart_signaller_code sigdev.frequency = roundstart_signaller_freq - if(isopenturf(loc)) - hide(TRUE) + + AddElement(/datum/element/undertile, tile_overlay = tile_overlay, use_anchor = TRUE) + RegisterSignal(src, COMSIG_OBJ_HIDE, .proc/ToggleActive) /obj/item/pressure_plate/Crossed(atom/movable/AM) . = ..() @@ -76,19 +76,7 @@ else to_chat(user, "You turn [src] off.") -/obj/item/pressure_plate/hide(yes) - if(yes) - invisibility = INVISIBILITY_MAXIMUM - anchored = TRUE - icon_state = null - active = TRUE - can_trigger = TRUE - if(tile_overlay) - loc.add_overlay(tile_overlay) - else - invisibility = initial(invisibility) - anchored = FALSE - icon_state = initial(icon_state) - active = FALSE - if(tile_overlay) - loc.overlays -= tile_overlay +///Called from COMSIG_OBJ_HIDE to toggle the active part, because yeah im not making a special exception on the element to support it +/obj/item/pressure_plate/proc/ToggleActive(datum/source, covered) + active = covered + diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index f617e8dc300..de4623298cb 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -85,14 +85,8 @@ frequency = new_frequency SSradio.add_object(src, frequency, RADIO_SIGNALER) -/obj/item/electropack/ui_status(mob/user) - var/mob/living/carbon/C = user - if(C?.back == src) - return UI_CLOSE - return ..() - /obj/item/electropack/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "electropack", name, ui_x, ui_y, master_ui, state) @@ -111,10 +105,6 @@ if(..()) return - var/mob/living/carbon/C = usr - if(C?.back == src) - return - switch(action) if("power") on = !on diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index c701d12422d..adcf20e0b71 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -69,6 +69,11 @@ icon_state = "srvsec_cypherkey" channels = list(RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_SECURITY = 1) +/obj/item/encryptionkey/headset_srvmed + name = "psychology radio encryption key" + icon_state = "srvmed_cypherkey" + channels = list(RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_SERVICE = 1) + /obj/item/encryptionkey/headset_com name = "command radio encryption key" icon_state = "com_cypherkey" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 920e7a595ac..4ca1417512a 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -157,6 +157,12 @@ GLOBAL_LIST_INIT(channel_tokens, list( icon_state = "srvsec_headset" keyslot = new /obj/item/encryptionkey/headset_srvsec +/obj/item/radio/headset/headset_srvmed + name = "psychology headset" + desc = "A headset allowing the wearer to communicate with medbay and service." + icon_state = "med_headset" + keyslot = new /obj/item/encryptionkey/headset_srvmed + /obj/item/radio/headset/headset_com name = "command radio headset" desc = "A headset with a commanding channel." diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 3d9fe85c654..f5225c054f8 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -93,7 +93,6 @@ /obj/item/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) - . = ..() if (message_mode == MODE_INTERCOM) return // Avoid hearing the same thing twice if(!anyai && !(speaker in ai)) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 8b1be721e63..14801f6f496 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -150,16 +150,7 @@ return var/tune = params["tune"] var/adjust = text2num(params["adjust"]) - if(tune == "input") - var/min = format_frequency(freerange ? MIN_FREE_FREQ : MIN_FREQ) - var/max = format_frequency(freerange ? MAX_FREE_FREQ : MAX_FREQ) - tune = input("Tune frequency ([min]-[max]):", name, format_frequency(frequency)) as null|num - if(!isnull(tune) && !..()) - if (tune < MIN_FREE_FREQ && tune <= MAX_FREE_FREQ / 10) - // allow typing 144.7 to get 1447 - tune *= 10 - . = TRUE - else if(adjust) + if(adjust) tune = frequency + adjust * 10 . = TRUE else if(text2num(tune) != null) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index 2627efce051..e04e2bdc422 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -76,8 +76,6 @@ "You force open the padlock!", "You hear a single, pronounced click!") REMOVE_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) struggling = FALSE - else - ..() return ..() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 1f9ecbe00b5..b1c68fece5a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -65,8 +65,6 @@ GENE SCANNER return var/list/t_ray_images = list() for(var/obj/O in orange(distance, viewer) ) - if(O.level != 1) - continue if(O.invisibility == INVISIBILITY_MAXIMUM || HAS_TRAIT(O, TRAIT_T_RAY_VISIBLE)) var/image/I = new(loc = get_turf(O)) @@ -309,15 +307,15 @@ GENE SCANNER var/datum/species/S = H.dna.species var/mutant = H.dna.check_mutation(HULK) \ || S.mutantlungs != initial(S.mutantlungs) \ - || S.mutant_brain != initial(S.mutant_brain) \ - || S.mutant_heart != initial(S.mutant_heart) \ + || S.mutantbrain != initial(S.mutantbrain) \ + || S.mutantheart != initial(S.mutantheart) \ || S.mutanteyes != initial(S.mutanteyes) \ || S.mutantears != initial(S.mutantears) \ || S.mutanthands != initial(S.mutanthands) \ || S.mutanttongue != initial(S.mutanttongue) \ - || S.mutanttail != initial(S.mutanttail) \ || S.mutantliver != initial(S.mutantliver) \ || S.mutantstomach != initial(S.mutantstomach) \ + || S.mutantappendix != initial(S.mutantappendix) \ || S.flying_species != initial(S.flying_species) render_list += "Species: [S.name][mutant ? "-derived mutant" : ""]\n" @@ -510,7 +508,7 @@ GENE SCANNER to_chat(user, "[src]'s barometer function says that the next storm will breeze on by.") else var/next_hit = SSweather.next_hit_by_zlevel["[T.z]"] - var/fixed = next_hit ? next_hit - world.time : -1 + var/fixed = next_hit ? timeleft(next_hit) : -1 if(fixed < 0) to_chat(user, "[src]'s barometer function was unable to trace any weather patterns.") else @@ -544,7 +542,7 @@ GENE SCANNER var/icon = target var/render_list = list() if(!silent && isliving(user)) - user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].") + user.visible_message("[user] uses the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].") render_list += "Results of analysis of [icon2html(icon, user)] [target]." var/list/airs = islist(mixture) ? mixture : list(mixture) @@ -693,7 +691,7 @@ GENE SCANNER gene_scan(M, user) else - user.visible_message("[user] failed to analyse [M]'s genetic sequence.", "[M] has no readable genetic sequence!") + user.visible_message("[user] fails to analyze [M]'s genetic sequence.", "[M] has no readable genetic sequence!") /obj/item/sequence_scanner/attack_self(mob/user) display_sequence(user) diff --git a/code/game/objects/items/devices/spyglasses.dm b/code/game/objects/items/devices/spyglasses.dm index 1d5bf151267..a69f22c62c3 100644 --- a/code/game/objects/items/devices/spyglasses.dm +++ b/code/game/objects/items/devices/spyglasses.dm @@ -7,15 +7,14 @@ if(!user) return if(!user.client) - return + return if(!linked_bug) user.audible_message("[src] lets off a shrill beep!") - - if("spypopup_map" in user.client.screen_maps) //alright, the popup this object uses is already IN use, so the window is open. no point in doing any other work here, so we're good. - return - user.client.setup_popup("spypopup",3,3,2) - var/list/buglist = list(linked_bug.cam_view,linked_bug.popupmaster) - user.client.add_objs_to_map(buglist) + if("spypopup_map" in user.client.screen_maps) //alright, the popup this object uses is already IN use, so the window is open. no point in doing any other work here, so we're good. + return + user.client.setup_popup("spypopup", 3, 3, 2) + user.client.register_map_obj(linked_bug.cam_screen) + user.client.register_map_obj(linked_bug.cam_plane_master) linked_bug.update_view() /obj/item/clothing/glasses/regular/spy/equipped(mob/user, slot) @@ -38,50 +37,55 @@ if(linked_bug) linked_bug.linked_glasses = null . = ..() - + /obj/item/spy_bug name = "pocket protector" icon = 'icons/obj/clothing/accessories.dmi' icon_state = "pocketprotector" desc = "an advanced peice of espionage equipment in the shape of a pocket protector. it has a built in 360 degree camera for all your nefarious needs. Microphone not included." - var/obj/item/clothing/glasses/regular/spy/linked_glasses - var/obj/screen/cam_view - var/obj/screen/plane_master/lighting/popupmaster - var/cam_range = 1//ranges higher than one can be used to see through walls. + var/obj/item/clothing/glasses/regular/spy/linked_glasses + var/obj/screen/cam_screen + var/obj/screen/plane_master/lighting/cam_plane_master + // Ranges higher than one can be used to see through walls. + var/cam_range = 1 var/datum/movement_detector/tracker /obj/item/spy_bug/Initialize() . = ..() tracker = new /datum/movement_detector(src, CALLBACK(src, .proc/update_view)) - - cam_view = new - cam_view.name = "screen" - cam_view.del_on_map_removal = FALSE - cam_view.assigned_map = "spypopup_map" - cam_view.screen_info = list(1,1) - - popupmaster = new - popupmaster.screen_loc = "spypopup_map:CENTER"//note that we don't use screen_info here, due to it being a non-standard placement. - popupmaster.assigned_map = "spypopup_map" - popupmaster.del_on_map_removal = FALSE //not stored on the client, but instead on the bug. there's no need to - //we need to add a lighting planesmaster to the popup, otherwise blending fucks up massively. Any planesmaster on the main screen does NOT apply to map popups. - //if there's ever a way to make planesmasters omnipresent, then this wouldn't be needed. + + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = "spypopup_map" + cam_screen.del_on_map_removal = FALSE + cam_screen.set_position(1, 1) + + // We need to add a lighting planesmaster to the popup, otherwise + // blending fucks up massively. Any planesmaster on the main screen does + // NOT apply to map popups. If there's ever a way to make planesmasters + // omnipresent, then this wouldn't be needed. + cam_plane_master = new + // Not stored on the client, but instead on the bug, therefore, there's + // no need to delete this object. + cam_plane_master.del_on_map_removal = FALSE + cam_plane_master.assigned_map = "spypopup_map" + // We are using set_screen_loc due to it being a non-standard placement. + cam_plane_master.screen_loc = "spypopup_map:CENTER" /obj/item/spy_bug/Destroy() if(linked_glasses) linked_glasses.linked_bug = null - - qdel(cam_view) - qdel(popupmaster) + qdel(cam_screen) + qdel(cam_plane_master) qdel(tracker) . = ..() /obj/item/spy_bug/proc/update_view()//this doesn't do anything too crazy, just updates the vis_contents of its screen obj - cam_view.vis_contents.Cut() + cam_screen.vis_contents.Cut() for(var/turf/visible_turf in view(1,get_turf(src)))//fuck you usr - cam_view.vis_contents += visible_turf + cam_screen.vis_contents += visible_turf //it needs to be linked, hence a kit. /obj/item/storage/box/rxglasses/spyglasskit diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index e38a4e05e5c..69541305d1f 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -56,13 +56,9 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/taperecorder/attack_hand(mob/user) - if(loc == user) - if(mytape) - if(!user.is_holding(src)) - return ..() - eject(user) - else + if(loc != user || !mytape || !user.is_holding(src)) return ..() + eject(user) /obj/item/taperecorder/proc/can_use(mob/user) if(user && ismob(user)) diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 3a3bdec7ff2..1be9024bcb2 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -113,7 +113,7 @@ effective or pretty fucking useless. ui_interact(user) /obj/item/healthanalyzer/rad_laser/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "radioactive_microlaser", "Radioactive Microlaser", ui_x, ui_y, master_ui, state) @@ -147,11 +147,7 @@ effective or pretty fucking useless. if("radintensity") var/target = params["target"] var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New output target (1-20):", name, intensity) as num|null - if(!isnull(target) && !..()) - . = TRUE - else if(target == "min") + if(target == "min") target = 1 . = TRUE else if(target == "max") @@ -169,11 +165,7 @@ effective or pretty fucking useless. if("radwavelength") var/target = params["target"] var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New output target (0-120):", name, wavelength) as num|null - if(!isnull(target) && !..()) - . = TRUE - else if(target == "min") + if(target == "min") target = 0 . = TRUE else if(target == "max") diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index a30a22b6777..6258d0d41c6 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -194,7 +194,7 @@ return /obj/item/transfer_valve/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "transfer_valve", name, ui_x, ui_y, master_ui, state) diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 25210566996..35d3e469403 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -208,7 +208,7 @@ obj/item/dice/d6/ebony if(special_faces.len == sides) result = special_faces[result] if(user != null) //Dice was rolled in someone's hand - user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \ + user.visible_message("[user] throws [src]. It lands on [result]. [comment]", \ "You throw [src]. It lands on [result]. [comment]", \ "You hear [src] rolling, it sounds like a [fake_result].") else if(!src.throwing) //Dice was thrown and is coming to rest diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index aba81ec00ce..2032a93f58d 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -518,6 +518,7 @@ if(M.has_dna() && !HAS_TRAIT(M, TRAIT_RADIMMUNE) && !HAS_TRAIT(M, TRAIT_BADDNA)) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" + var/pref = "" for(var/mutation in add_mutations) var/datum/mutation/human/HM = mutation if(istype(HM, /datum/mutation/human)) @@ -527,13 +528,14 @@ log_msg += "(FAILED)" else M.dna.add_mutation(HM, MUT_EXTRA) - name = "expended [name]" + pref = "expended" else if(research && M.client) filled = TRUE - name = "filled [name]" + pref = "filled" else - name = "expended [name]" + pref = "expended" log_msg += "([mutation])" + name = "[pref] [name]" log_attack("[log_msg] [loc_name(user)]") return TRUE return FALSE diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm new file mode 100644 index 00000000000..e8c99f98f40 --- /dev/null +++ b/code/game/objects/items/dualsaber.dm @@ -0,0 +1,188 @@ +/* + * Double-Bladed Energy Swords - Cheridan + */ +/obj/item/dualsaber + icon = 'icons/obj/transforming_energy.dmi' + icon_state = "dualsaber0" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + name = "double-bladed energy sword" + desc = "Handle with care." + force = 3 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + var/w_class_on = WEIGHT_CLASS_BULKY + hitsound = "swing_hit" + armour_penetration = 35 + var/saber_color = "green" + light_color = "#00ff00"//green + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + block_chance = 75 + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) + resistance_flags = FIRE_PROOF + var/two_hand_force = 34 + var/hacked = FALSE + var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD + var/list/possible_colors = list("red", "blue", "green", "purple") + var/wielded = FALSE // track wielded status on item + +/obj/item/dualsaber/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=force, force_wielded=two_hand_force, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') + +/// Triggered on wield of two handed item +/// Specific hulk checks due to reflection chance for balance issues and switches hitsounds. +/obj/item/dualsaber/proc/on_wield(obj/item/source, mob/living/carbon/user) + if(user && user.has_dna()) + if(user.dna.check_mutation(HULK)) + to_chat(user, "You lack the grace to wield this!") + return COMPONENT_TWOHANDED_BLOCK_WIELD + wielded = TRUE + sharpness = IS_SHARP + w_class = w_class_on + hitsound = 'sound/weapons/blade1.ogg' + START_PROCESSING(SSobj, src) + set_light(brightness_on) + +/// Triggered on unwield of two handed item +/// switch hitsounds +/obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user) + wielded = FALSE + sharpness = initial(sharpness) + w_class = initial(w_class) + hitsound = "swing_hit" + STOP_PROCESSING(SSobj, src) + set_light(0) + +/obj/item/dualsaber/update_icon_state() + if(wielded) + icon_state = "dualsaber[saber_color][wielded]" + else + icon_state = "dualsaber0" + +/obj/item/dualsaber/suicide_act(mob/living/carbon/user) + if(wielded) + user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!") + + var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code + var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) + B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea + var/randdir + for(var/i in 1 to 24)//like a headless chicken! + if(user.is_holding(src)) + randdir = pick(GLOB.alldirs) + user.Move(get_step(user, randdir),randdir) + user.emote("spin") + if (i == 3 && myhead) + myhead.drop_limb() + sleep(3) + else + user.visible_message("[user] panics and starts choking to death!") + return OXYLOSS + + else + user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!") + return BRUTELOSS + +/obj/item/dualsaber/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + if(LAZYLEN(possible_colors)) + saber_color = pick(possible_colors) + switch(saber_color) + if("red") + light_color = LIGHT_COLOR_RED + if("green") + light_color = LIGHT_COLOR_GREEN + if("blue") + light_color = LIGHT_COLOR_LIGHT_CYAN + if("purple") + light_color = LIGHT_COLOR_LAVENDER + +/obj/item/dualsaber/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/item/dualsaber/attack(mob/target, mob/living/carbon/human/user) + if(user.has_dna()) + if(user.dna.check_mutation(HULK)) + to_chat(user, "You grip the blade too hard and accidentally drop it!") + if(wielded) + user.dropItemToGround(src, force=TRUE) + return + ..() + if(wielded && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + impale(user) + return + if(wielded && prob(50)) + INVOKE_ASYNC(src, .proc/jedi_spin, user) + +/obj/item/dualsaber/proc/jedi_spin(mob/living/user) + dance_rotate(user, CALLBACK(user, /mob.proc/dance_flip)) + +/obj/item/dualsaber/proc/impale(mob/living/user) + to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") + if(wielded) + user.take_bodypart_damage(20,25,check_armor = TRUE) + else + user.adjustStaminaLoss(25) + +/obj/item/dualsaber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + return ..() + return 0 + +/obj/item/dualsaber/process() + if(wielded) + if(hacked) + light_color = pick(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER) + open_flame() + else + STOP_PROCESSING(SSobj, src) + +/obj/item/dualsaber/IsReflect() + if(wielded) + return 1 + +/obj/item/dualsaber/ignition_effect(atom/A, mob/user) + // same as /obj/item/melee/transforming/energy, mostly + if(!wielded) + return "" + var/in_mouth = "" + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(C.wear_mask) + in_mouth = ", barely missing [user.p_their()] nose" + . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." + playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) + add_fingerprint(user) + // Light your candles while spinning around the room + INVOKE_ASYNC(src, .proc/jedi_spin, user) + +/obj/item/dualsaber/green + possible_colors = list("green") + +/obj/item/dualsaber/red + possible_colors = list("red") + +/obj/item/dualsaber/blue + possible_colors = list("blue") + +/obj/item/dualsaber/purple + possible_colors = list("purple") + +/obj/item/dualsaber/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_MULTITOOL) + if(!hacked) + hacked = TRUE + to_chat(user, "2XRNBW_ENGAGE") + saber_color = "rainbow" + update_icon() + else + to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") + else + return ..() diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm new file mode 100644 index 00000000000..512ca1f4b0e --- /dev/null +++ b/code/game/objects/items/fireaxe.dm @@ -0,0 +1,69 @@ +/* + * Fireaxe + */ +/obj/item/fireaxe // DEM AXES MAN, marker -Agouri + icon_state = "fireaxe0" + lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' + name = "fire axe" + desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" + force = 5 + throwforce = 15 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") + hitsound = 'sound/weapons/bladeslice.ogg' + sharpness = IS_SHARP + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) + resistance_flags = FIRE_PROOF + var/wielded = FALSE // track wielded status on item + +/obj/item/fireaxe/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/fireaxe/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="fireaxe1") + +/// triggered on wield of two handed item +/obj/item/fireaxe/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/fireaxe/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/fireaxe/update_icon_state() + icon_state = "fireaxe0" + +/obj/item/fireaxe/suicide_act(mob/user) + user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!") + return (BRUTELOSS) + +/obj/item/fireaxe/afterattack(atom/A, mob/user, proximity) + . = ..() + if(!proximity) + return + if(wielded) //destroys windows and grilles in one hit + if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) + var/obj/structure/W = A + W.obj_destruction("fireaxe") + +/* + * Bone Axe + */ +/obj/item/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone. + icon_state = "bone_axe0" + name = "bone axe" + desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." + +/obj/item/fireaxe/boneaxe/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=23, icon_wielded="bone_axe1") + +/obj/item/fireaxe/boneaxe/update_icon_state() + icon_state = "bone_axe0" diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 07a222e403f..bf1a0f70469 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -188,7 +188,7 @@ user.set_nutrition(0) /obj/item/book/granter/spell/blind - spell = /obj/effect/proc_holder/spell/targeted/trigger/blind + spell = /obj/effect/proc_holder/spell/pointed/trigger/blind spellname = "blind" icon_state ="bookblind" desc = "This book looks blurry, no matter how you look at it." diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index eb7e79a1104..e7e13460668 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -16,6 +16,7 @@ active = 0 det_time = 50 display_timer = 0 + var/check_parts = FALSE var/range = 3 var/list/times @@ -30,17 +31,29 @@ det_time = rand(30,80) else range = pick(2,2,2,3,3,3,4) + if(check_parts) //since construction code calls this itself, no need to always call it. This does have the downside that adminspawned ones can potentially not have cans if they don't use the /spawned subtype. + CheckParts() + +/obj/item/grenade/iedcasing/spawned + check_parts = TRUE + +/obj/item/grenade/iedcasing/spawned/Initialize() + new /obj/item/reagent_containers/food/drinks/soda_cans/random(src) + return ..() /obj/item/grenade/iedcasing/CheckParts(list/parts_list) ..() var/obj/item/reagent_containers/food/drinks/soda_cans/can = locate() in contents - if(can) - can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED - can.pixel_y = 0 - var/mutable_appearance/can_underlay = new(can) - can_underlay.layer = FLOAT_LAYER - can_underlay.plane = FLOAT_PLANE - underlays += can_underlay + if(!can) + stack_trace("[src] generated without a soda can!") //this shouldn't happen. + qdel(src) + return + can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED + can.pixel_y = 0 + var/mutable_appearance/can_underlay = new(can) + can_underlay.layer = FLOAT_LAYER + can_underlay.plane = FLOAT_PLANE + underlays += can_underlay /obj/item/grenade/iedcasing/attack_self(mob/user) // diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index b7e90603f2e..b4ef9874a47 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -151,7 +151,6 @@ breakouttime = 1 SECONDS /obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) - ..() if(istype(I, /obj/item/stack/rods)) var/obj/item/stack/rods/R = I if (R.use(1)) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index bd79c3dffc8..23f99f3b7e3 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -25,7 +25,7 @@ desc = "Contains a set of armaments for the chaplain." /obj/item/choice_beacon/holy/canUseBeacon(mob/living/user) - if(user.mind && user.mind.isholy) + if(user.mind && user.mind.holy_role) return ..() else playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE) @@ -213,7 +213,7 @@ return (BRUTELOSS|FIRELOSS) /obj/item/nullrod/attack_self(mob/user) - if(user.mind && (user.mind.isholy) && !reskinned) + if(user.mind && (user.mind.holy_role) && !reskinned) reskin_holy_weapon(user) /obj/item/nullrod/proc/reskin_holy_weapon(mob/M) @@ -607,7 +607,7 @@ /obj/item/nullrod/carp/attack_self(mob/living/user) if(used_blessing) - else if(user.mind && (user.mind.isholy)) + else if(user.mind && (user.mind.holy_role)) to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.") user.faction |= "carp" used_blessing = TRUE diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index b5af9750bf0..69d7bb2b1bb 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -90,12 +90,12 @@ if(istype(I, /obj/item/implant)) var/obj/item/implant/P = I if(P.implant(M)) - visible_message("[M] has been implanted by [src].") + visible_message("[M] is implanted by [src].") return TRUE else if(istype(I, /obj/item/organ)) var/obj/item/organ/P = I P.Insert(M, FALSE, FALSE) - visible_message("[M] has been implanted by [src].") + visible_message("[M] is implanted by [src].") return TRUE /obj/machinery/implantchair/update_icon_state() diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 77e3c2c95a6..ffa2ddf349a 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -35,7 +35,7 @@ if (M == user) to_chat(user, "You implant yourself.") else - M.visible_message("[user] has implanted [M].", "[user] implants you.") + M.visible_message("[user] implants [M].", "[user] implants you.") imp = null update_icon() else diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index a95683d9d21..d6193f1d1ee 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -92,8 +92,12 @@ var/bayonet = FALSE //Can this be attached to a gun? custom_price = 250 -/obj/item/kitchen/knife/Initialize() +/obj/item/kitchen/knife/ComponentInitialize() . = ..() + set_butchering() + +///Adds the butchering component, used to override stats for special cases +/obj/item/kitchen/knife/proc/set_butchering() AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force /obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user) @@ -153,6 +157,15 @@ w_class = WEIGHT_CLASS_NORMAL custom_price = 600 +/obj/item/kitchen/knife/hunting + name = "hunting knife" + desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting." + item_state = "huntingknife" + icon_state = "huntingknife" + +/obj/item/kitchen/knife/hunting/set_butchering() + AddComponent(/datum/component/butchering, 80 - force, 100, force + 10) + /obj/item/kitchen/knife/combat name = "combat knife" icon_state = "buckknife" @@ -190,20 +203,29 @@ icon_state = "knife_cyborg" desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." -/obj/item/kitchen/knife/carrotshiv - name = "carrot shiv" - icon_state = "carrotshiv" - item_state = "carrotshiv" +/obj/item/kitchen/knife/shiv + name = "glass shiv" + icon = 'icons/obj/shards.dmi' + icon_state = "shiv" + item_state = "shiv" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "Unlike other carrots, you should probably keep this far away from your eyes." + desc = "A makeshift glass shiv." force = 8 - throwforce = 12//fuck git - custom_materials = null + throwforce = 12 attack_verb = list("shanked", "shivved") armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + custom_materials = list(/datum/material/glass=400) + +/obj/item/kitchen/knife/shiv/carrot + name = "carrot shiv" + icon_state = "carrotshiv" + item_state = "carrotshiv" + icon = 'icons/obj/kitchen.dmi' + desc = "Unlike other carrots, you should probably keep this far away from your eyes." + custom_materials = null -/obj/item/kitchen/knife/carrotshiv/suicide_act(mob/living/carbon/user) +/obj/item/kitchen/knife/shiv/carrot/suicide_act(mob/living/carbon/user) user.visible_message("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!") return BRUTELOSS diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d39a9d6e681..1741b010fe1 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -292,7 +292,7 @@ playsound(get_turf(src), on_stun_sound, 75, TRUE, -1) target.Knockdown(knockdown_time_carbon) - target.apply_damage(stamina_damage, STAMINA) + target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST) additional_effects_carbon(target, user) log_combat(user, target, "stunned", src) @@ -647,7 +647,7 @@ item_state = "mace_greyscale" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR //Material type changes the prefix as well as the color. + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color. custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. slot_flags = ITEM_SLOT_BELT force = 14 diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 1dbd87d1733..a243347c8f6 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -106,6 +106,15 @@ new /obj/item/toy/crayon/spraycan(src) new /obj/item/clothing/shoes/sandal(src) +/obj/item/storage/box/hero/carphunter + name = "Carp Hunter, Wildlife Expert - 2506." + +/obj/item/storage/box/hero/carphunter/PopulateContents() + new /obj/item/clothing/suit/space/hardsuit/carp/old(src) + new /obj/item/clothing/mask/gas/carp(src) + new /obj/item/kitchen/knife/hunting(src) + new /obj/item/storage/box/papersack/meat(src) + /obj/item/choice_beacon/augments name = "augment beacon" desc = "Summons augmentations. Can be used 3 times!" diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm new file mode 100644 index 00000000000..d006fa7cab2 --- /dev/null +++ b/code/game/objects/items/pitchfork.dm @@ -0,0 +1,100 @@ +/obj/item/pitchfork + icon_state = "pitchfork0" + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + name = "pitchfork" + desc = "A simple tool used for moving hay." + force = 7 + throwforce = 15 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("attacked", "impaled", "pierced") + hitsound = 'sound/weapons/bladeslice.ogg' + sharpness = IS_SHARP + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) + resistance_flags = FIRE_PROOF + var/wielded = FALSE // track wielded status on item + +/obj/item/pitchfork/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/pitchfork/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="pitchfork1") + +/// triggered on wield of two handed item +/obj/item/pitchfork/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/pitchfork/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/pitchfork/update_icon_state() + icon_state = "pitchfork0" + +/obj/item/pitchfork/demonic + name = "demonic pitchfork" + desc = "A red pitchfork, it looks like the work of the devil." + force = 19 + throwforce = 24 + +/obj/item/pitchfork/demonic/Initialize() + . = ..() + set_light(3,6,LIGHT_COLOR_RED) + +/obj/item/pitchfork/demonic/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=19, force_wielded=25) + +/obj/item/pitchfork/demonic/greater + force = 24 + throwforce = 50 + +/obj/item/pitchfork/demonic/greater/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=24, force_wielded=34) + +/obj/item/pitchfork/demonic/ascended + force = 100 + throwforce = 100 + +/obj/item/pitchfork/demonic/ascended/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=100, force_wielded=500000) // Kills you DEAD + +/obj/item/pitchfork/suicide_act(mob/user) + user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return (BRUTELOSS) + +/obj/item/pitchfork/demonic/pickup(mob/living/user) + . = ..() + if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user)) + var/mob/living/U = user + U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ + "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"") + if(ishuman(U)) + var/mob/living/carbon/human/H = U + H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + else + U.adjustFireLoss(rand(force/2,force)) + +/obj/item/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) + if(user.mind && user.owns_soul() && !is_devil(user)) + to_chat(user, "[src] burns in your hands.") + user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + ..() + +/obj/item/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity) + . = ..() + if(!proximity || !wielded) + return + if(iswallturf(target)) + var/turf/closed/wall/W = target + user.visible_message("[user] blasts \the [target] with \the [src]!") + playsound(target, 'sound/magic/disintegrate.ogg', 100, TRUE) + W.break_wall() + W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + return diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index ab637e44aec..e993b6e1e89 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -22,6 +22,7 @@ var/heartbroken = FALSE var/vowbroken = FALSE var/young = FALSE +///Prevents players from cutting stuffing out of a plushie if true var/divine = FALSE var/mood_message var/list/love_message @@ -573,22 +574,13 @@ ram() /obj/item/toy/plush/goatplushie/angry/proc/ram() - if(prob((obj_flags & EMAGGED) ? 98:90) && isturf(loc) && considered_alive(target.mind) && !faction_check(list("goat"), target.faction, FALSE)) + if(prob(90) && isturf(loc) && considered_alive(target.mind) && !faction_check(list("goat"), target.faction, FALSE)) throw_at(target, 10, 10) visible_message("[src] rams [target]!") cooldown = world.time + cooldown_modifier target = null visible_message("[src] looks disinterested.") -/obj/item/toy/plush/goatplushie/angry/emag_act(mob/user) - if (obj_flags&EMAGGED) - visible_message("[src] already looks angry enough, you shouldn't anger it more.") - return - cooldown_modifier = 5 - throwforce = 20 - obj_flags |= EMAGGED - visible_message("[src] stares at [user] angrily before going docile.") - /obj/item/toy/plush/goatplushie/angry/Destroy() STOP_PROCESSING(SSprocessing, src) return ..() @@ -668,3 +660,30 @@ desc = "A plushie depicting one of the royal King Goat's guards, tasked to protecting the king at all costs and training new goat guards." icon_state = "royalguardgoat" throwforce = 15 + +/obj/item/toy/plush/moth + name = "moth plushie" + desc = "A plushie depicting an adorable mothperson. It's a huggable bug!" + icon_state = "moffplush" + item_state = "moffplush" + attack_verb = list("fluttered", "flapped") + squeak_override = list('sound/voice/moth/scream_moth.ogg'=1) +///Used to track how many people killed themselves with item/toy/plush/moth + var/suicide_count = 0 + +/obj/item/toy/plush/moth/suicide_act(mob/living/user) + user.visible_message("[user] stares deeply into the eyes of [src] and it begins consuming [user.p_them()]! It looks like [user.p_theyre()] trying to commit suicide!") + suicide_count++ + if(suicide_count < 3) + desc = "A plushie depicting an unsettling mothperson. After killing [suicide_count] [suicide_count == 1 ? "person" : "people"] it's not looking so huggable now..." + else + desc = "A plushie depicting a creepy mothperson. It's killed [suicide_count] people! I don't think I want to hug it any more!" + divine = TRUE + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + playsound(src, 'sound/hallucinations/wail.ogg', 50, TRUE, -1) + var/list/available_spots = get_adjacent_open_turfs(loc) + if(available_spots.len) //If the user is in a confined space the plushie will drop normally as the user dies, but in the open the plush is placed one tile away from the user to prevent squeak spam + var/turf/open/random_open_spot = pick(available_spots) + forceMove(random_open_spot) + user.dust(just_ash = FALSE, drop_items = TRUE) + return MANUAL_SUICIDE diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 5e0dbc421a1..24fd1a30044 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -116,20 +116,28 @@ var/reward = /obj/item/reagent_containers/food/snacks/cookie var/claimed = FALSE +/obj/item/pressure_plate/hologrid/Initialize() + . = ..() + + AddElement(/datum/element/undertile, tile_overlay = tile_overlay) //we remove use_anchor here, so it ALWAYS stays anchored + /obj/item/pressure_plate/hologrid/examine(mob/user) . = ..() if(claimed) . += "This one appears to be spent already." /obj/item/pressure_plate/hologrid/trigger() - reward = new reward(loc) + if(!claimed) + new reward(loc) flick("lasergrid_a",src) icon_state = "lasergrid_full" + claimed = TRUE /obj/item/pressure_plate/hologrid/Crossed(atom/movable/AM) . = ..() if(trigger_item && istype(AM, specific_item) && !claimed) - claimed = TRUE + AM.anchored = TRUE flick("laserbox_burn", AM) + trigger() sleep(15) qdel(AM) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 6987b5093de..ca938d6bf77 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -25,8 +25,8 @@ M.Paralyze(100) M.apply_effect(EFFECT_STUTTER, 5) - M.visible_message("[user] has prodded [M] with [src]!", \ - "[user] has prodded you with [src]!") + M.visible_message("[user] prods [M] with [src]!", \ + "[user] prods you with [src]!") playsound(loc, 'sound/weapons/egloves.ogg', 50, TRUE, -1) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 66dd39e1039..6e86b79dd6e 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -6,6 +6,7 @@ desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" + w_class = WEIGHT_CLASS_SMALL var/locked = FALSE var/installed = 0 var/require_module = 0 @@ -440,19 +441,19 @@ if(BP) BP.deactivate(R, user) to_chat(user, "You remove the defibrillator unit to make room for the compact upgrade.") - var/obj/item/twohanded/shockpaddles/cyborg/S = new(R.module) + var/obj/item/shockpaddles/cyborg/S = new(R.module) R.module.basic_modules += S R.module.add_module(S, FALSE, TRUE) /obj/item/borg/upgrade/defib/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - var/obj/item/twohanded/shockpaddles/cyborg/S = locate() in R.module + var/obj/item/shockpaddles/cyborg/S = locate() in R.module R.module.remove_module(S, TRUE) if(backpack) new /obj/item/defibrillator(get_turf(R)) qdel(src) - + /obj/item/borg/upgrade/processor name = "medical cyborg surgical processor" diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm index da4ce62437c..62bc2a0b4b7 100644 --- a/code/game/objects/items/sharpener.dm +++ b/code/game/objects/items/sharpener.dm @@ -24,25 +24,22 @@ if(istype(I, /obj/item/melee/transforming/energy)) to_chat(user, "You don't think \the [I] will be the thing getting modified if you use it on \the [src]!") return - if(istype(I, /obj/item/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff - var/obj/item/twohanded/TH = I - if(TH.force_wielded >= max) - to_chat(user, "[TH] is much too powerful to sharpen further!") - return - if(TH.wielded) - to_chat(user, "[TH] must be unwielded before it can be sharpened!") - return - if(TH.force_wielded > initial(TH.force_wielded)) - to_chat(user, "[TH] has already been refined before. It cannot be sharpened further!") - return - TH.force_wielded = clamp(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay - if(I.force > initial(I.force)) + + var/signal_out = SEND_SIGNAL(I, COMSIG_ITEM_SHARPEN_ACT, increment, max) + if(signal_out & COMPONENT_BLOCK_SHARPEN_MAXED) + to_chat(user, "[I] is much too powerful to sharpen further!") + return + if(signal_out & COMPONENT_BLOCK_SHARPEN_BLOCKED) + to_chat(user, "[I] is not able to be sharpened right now!") + return + if((signal_out & COMPONENT_BLOCK_SHARPEN_ALREADY) || (I.force > initial(I.force) && !signal_out)) to_chat(user, "[I] has already been refined before. It cannot be sharpened further!") return + if(!(signal_out & COMPONENT_BLOCK_SHARPEN_APPLIED)) + I.force = clamp(I.force + increment, 0, max) user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.") playsound(src, 'sound/items/unsheath.ogg', 25, TRUE) I.sharpness = IS_SHARP_ACCURATE - I.force = clamp(I.force + increment, 0, max) I.throwforce = clamp(I.throwforce + increment, 0, max) I.name = "[prefix] [I.name]" name = "worn out [name]" diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index 3a9f29f6bc8..7cea1ff502c 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -1,4 +1,4 @@ -/obj/item/twohanded/singularityhammer +/obj/item/singularityhammer name = "singularity hammer" desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." icon_state = "mjollnir0" @@ -8,8 +8,6 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK force = 5 - force_unwielded = 5 - force_wielded = 20 throwforce = 15 throw_range = 1 w_class = WEIGHT_CLASS_HUGE @@ -17,24 +15,38 @@ resistance_flags = FIRE_PROOF | ACID_PROOF force_string = "LORD SINGULOTH HIMSELF" var/charged = 5 + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/singularityhammer/Initialize() +/obj/item/singularityhammer/Initialize() . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) START_PROCESSING(SSobj, src) -/obj/item/twohanded/singularityhammer/Destroy() - STOP_PROCESSING(SSobj, src) +/obj/item/singularityhammer/ComponentInitialize() . = ..() + AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="mjollnir1") + +/// triggered on wield of two handed item +/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/singularityhammer/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/singularityhammer/update_icon_state() + icon_state = "mjollnir0" -/obj/item/twohanded/singularityhammer/process() +/obj/item/singularityhammer/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/singularityhammer/process() if(charged < 5) charged++ - return -/obj/item/twohanded/singularityhammer/update_icon_state() //Currently only here to fuck with the on-mob icons. - icon_state = "mjollnir[wielded]" - -/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder) +/obj/item/singularityhammer/proc/vortex(turf/pull, mob/wielder) for(var/atom/X in orange(5,pull)) if(ismovable(X)) var/atom/movable/A = X @@ -54,9 +66,8 @@ step_towards(H,pull) step_towards(H,pull) step_towards(H,pull) - return -/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) +/obj/item/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) . = ..() if(!proximity) return @@ -70,7 +81,7 @@ var/turf/target = get_turf(A) vortex(target,user) -/obj/item/twohanded/mjollnir +/obj/item/mjollnir name = "Mjolnir" desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." icon_state = "mjollnir0" @@ -79,34 +90,49 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK force = 5 - force_unwielded = 5 - force_wielded = 25 throwforce = 30 throw_range = 7 w_class = WEIGHT_CLASS_HUGE + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/mjollnir/proc/shock(mob/living/target) +/obj/item/mjollnir/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/mjollnir/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_multiplier=5, icon_wielded="mjollnir1", attacksound="sparks") + +/// triggered on wield of two handed item +/obj/item/mjollnir/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/mjollnir/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/mjollnir/update_icon_state() + icon_state = "mjollnir0" + +/obj/item/mjollnir/proc/shock(mob/living/target) target.Stun(60) var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread s.set_up(5, 1, target.loc) s.start() - target.visible_message("[target.name] was shocked by [src]!", \ + target.visible_message("[target.name] is shocked by [src]!", \ "You feel a powerful shock course through your body sending you flying!", \ "You hear a heavy electrical crack!") var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) target.throw_at(throw_target, 200, 4) return -/obj/item/twohanded/mjollnir/attack(mob/living/M, mob/user) +/obj/item/mjollnir/attack(mob/living/M, mob/user) ..() if(wielded) - playsound(src.loc, "sparks", 50, TRUE) shock(M) -/obj/item/twohanded/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(isliving(hit_atom)) shock(hit_atom) - -/obj/item/twohanded/mjollnir/update_icon_state() //Currently only here to fuck with the on-mob icons. - icon_state = "mjollnir[wielded]" diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm new file mode 100644 index 00000000000..5936a45f632 --- /dev/null +++ b/code/game/objects/items/spear.dm @@ -0,0 +1,170 @@ +//spears +/obj/item/spear + icon_state = "spearglass0" + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + name = "spear" + desc = "A haphazardly-constructed yet still deadly weapon of ancient design." + force = 10 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + throwforce = 20 + throw_speed = 4 + embedding = list("impact_pain_mult" = 3) + armour_penetration = 10 + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") + sharpness = IS_SHARP + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) + var/war_cry = "AAAAARGH!!!" + var/icon_prefix = "spearglass" + +/obj/item/spear/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. + AddComponent(/datum/component/jousting) + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") + +/obj/item/spear/update_icon_state() + icon_state = "[icon_prefix]0" + +/obj/item/spear/suicide_act(mob/living/carbon/user) + user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return BRUTELOSS + +/obj/item/spear/CheckParts(list/parts_list) + var/obj/item/shard/tip = locate() in parts_list + if (istype(tip, /obj/item/shard/plasma)) + throwforce = 21 + icon_prefix = "spearplasma" + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + update_icon() + qdel(tip) + ..() + +/obj/item/spear/explosive + name = "explosive lance" + var/obj/item/grenade/explosive = null + var/wielded = FALSE // track wielded status on item + +/obj/item/spear/explosive/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances + +/obj/item/spear/explosive/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="spearbomb1") + +/// triggered on wield of two handed item +/obj/item/spear/explosive/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/spear/explosive/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/spear/explosive/update_icon_state() + icon_state = "spearbomb0" + +/obj/item/spear/explosive/proc/set_explosive(obj/item/grenade/G) + if(explosive) + QDEL_NULL(explosive) + G.forceMove(src) + explosive = G + desc = "A makeshift spear with [G] attached to it" + +/obj/item/spear/explosive/CheckParts(list/parts_list) + var/obj/item/grenade/G = locate() in parts_list + if(G) + var/obj/item/spear/lancePart = locate() in parts_list + var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed) + if(comp_twohand) + var/lance_wielded = comp_twohand.force_wielded + var/lance_unwielded = comp_twohand.force_unwielded + AddComponent(/datum/component/two_handed, force_unwielded=lance_unwielded, force_wielded=lance_wielded) + throwforce = lancePart.throwforce + icon_prefix = lancePart.icon_prefix + parts_list -= G + parts_list -= lancePart + set_explosive(G) + qdel(lancePart) + ..() + +/obj/item/spear/explosive/suicide_act(mob/living/carbon/user) + user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.say("[war_cry]", forced="spear warcry") + explosive.forceMove(user) + explosive.prime() + user.gib() + qdel(src) + return BRUTELOSS + +/obj/item/spear/explosive/examine(mob/user) + . = ..() + . += "Alt-click to set your war cry." + +/obj/item/spear/explosive/AltClick(mob/user) + if(user.canUseTopic(src, BE_CLOSE)) + ..() + if(istype(user) && loc == user) + var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) + if(input) + src.war_cry = input + +/obj/item/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) + . = ..() + if(!proximity) + return + if(wielded) + user.say("[war_cry]", forced="spear warcry") + explosive.forceMove(AM) + explosive.prime() + qdel(src) + +//GREY TIDE +/obj/item/spear/grey_tide + name = "\improper Grey Tide" + desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces." + attack_verb = list("gored") + force=15 + +/obj/item/spear/grey_tide/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=15, force_wielded=25, icon_wielded="[icon_prefix]1") + +/obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) + . = ..() + if(!proximity) + return + user.faction |= "greytide([REF(user)])" + if(isliving(AM)) + var/mob/living/L = AM + if(istype (L, /mob/living/simple_animal/hostile/illusion)) + return + if(!L.stat && prob(50)) + var/mob/living/simple_animal/hostile/illusion/M = new(user.loc) + M.faction = user.faction.Copy() + M.Copy_Parent(user, 100, user.health/2.5, 12, 30) + M.GiveTarget(L) + +/* + * Bone Spear + */ +/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. + icon_state = "bone_spear0" + name = "bone spear" + desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." + force = 12 + throwforce = 22 + armour_penetration = 15 //Enhanced armor piercing + +/obj/item/spear/bonespear/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="bone_spear1") + +/obj/item/spear/bonespear/update_icon_state() + icon_state = "bone_spear0" diff --git a/code/game/objects/items/stacks/license_plates.dm b/code/game/objects/items/stacks/license_plates.dm new file mode 100644 index 00000000000..06dc86ee615 --- /dev/null +++ b/code/game/objects/items/stacks/license_plates.dm @@ -0,0 +1,30 @@ +/obj/item/stack/license_plates + name = "invalid plate" + desc = "someone fucked up" + icon = 'icons/obj/machines/prison.dmi' + icon_state = "empty_plate" + novariants = FALSE + max_amount = 50 + +/obj/item/stack/license_plates/empty + name = "empty license plate" + desc = "Instead of a license plate number, this could contain a quote like \"Live laugh love\"." + +/obj/item/stack/license_plates/empty/fifty + amount = 50 + +/obj/item/stack/license_plates/filled + name = "license plate" + desc = "Prison labor paying off." + icon_state = "filled_plate_1_1" + +///Override to allow for variations +/obj/item/stack/license_plates/filled/update_icon_state() + if(novariants) + return + if(amount <= (max_amount * (1/3))) + icon_state = "filled_plate_[rand(1,6)]_1" + else if (amount <= (max_amount * (2/3))) + icon_state = "filled_plate_[rand(1,6)]_2" + else + icon_state = "filled_plate_[rand(1,6)]_3" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index c07869c4a0c..8e877449079 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -269,7 +269,6 @@ is_open = FALSE update_icon() - /obj/item/stack/medical/mesh/update_icon_state() if(!is_open) icon_state = "regen_mesh_closed" @@ -313,6 +312,57 @@ return . = ..() +/obj/item/stack/medical/mesh/advanced + name = "advanced regenerative mesh" + desc = "An advanced mesh made with aloe extracts and sterilizing chemicals, used to treat burns." + + gender = PLURAL + singular_name = "advanced regenerative mesh" + icon_state = "aloe_mesh" + heal_burn = 15 + grind_results = list(/datum/reagent/consumable/aloejuice = 1) + +/obj/item/stack/medical/mesh/advanced/update_icon_state() + if(!is_open) + icon_state = "aloe_mesh_closed" + else + return ..() + +/obj/item/stack/medical/aloe + name = "aloe cream" + desc = "A healing paste you can apply on wounds." + + icon_state = "aloe_paste" + self_delay = 20 + other_delay = 10 + novariants = TRUE + amount = 20 + max_amount = 20 + var/heal = 3 + grind_results = list(/datum/reagent/consumable/aloejuice = 1) + +/obj/item/stack/medical/aloe/heal(mob/living/M, mob/user) + . = ..() + if(M.stat == DEAD) + to_chat(user, "[M] is dead! You can not help [M.p_them()].") + return FALSE + if(iscarbon(M)) + return heal_carbon(M, user, heal, heal) + if(isanimal(M)) + var/mob/living/simple_animal/critter = M + if (!(critter.healable)) + to_chat(user, "You cannot use \the [src] on [M]!") + return FALSE + else if (critter.health == critter.maxHealth) + to_chat(user, "[M] is at full health.") + return FALSE + user.visible_message("[user] applies \the [src] on [M].", "You apply \the [src] on [M].") + M.heal_bodypart_damage(heal, heal) + return TRUE + + to_chat(user, "You can't heal [M] with the \the [src]!") + + /* The idea is for these medical devices to work like a hybrid of the old brute packs and tend wounds, they heal a little at a time, have reduced healing density and does not allow for rapid healing while in combat. diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index a543b45a859..eee5d7243b6 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -310,10 +310,21 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( to_chat(M, "[src] cuts into your hand!") M.apply_damage(force*0.5, BRUTE, hit_hand) - /obj/item/shard/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/lightreplacer)) - I.attackby(src, user) + var/obj/item/lightreplacer/L = I + L.attackby(src, user) + else if(istype(I, /obj/item/stack/sheet/cloth)) + var/obj/item/stack/sheet/cloth/C = I + to_chat(user, "You begin to wrap the [C] around the [src]...") + if(do_after(user, 35, target = src)) + var/obj/item/kitchen/knife/shiv/S = new /obj/item/kitchen/knife/shiv + C.use(1) + to_chat(user, "You wrap the [C] around the [src] forming a makeshift weapon.") + remove_item_from_storage(src) + qdel(src) + user.put_in_hands(S) + else return ..() diff --git a/code/game/objects/items/stacks/sheets/hot_ice.dm b/code/game/objects/items/stacks/sheets/hot_ice.dm new file mode 100644 index 00000000000..bb64f5e6cb7 --- /dev/null +++ b/code/game/objects/items/stacks/sheets/hot_ice.dm @@ -0,0 +1,13 @@ +/obj/item/stack/sheet/hot_ice + name = "hot ice" + icon_state = "hot-ice" + item_state = "hot-ice" + singular_name = "hot ice" + icon = 'icons/obj/stack_objects.dmi' + custom_materials = list(/datum/material/hot_ice=MINERAL_MATERIAL_AMOUNT) + grind_results = list(/datum/reagent/toxin/plasma = 200) + material_type = /datum/material/hot_ice + +/obj/item/stack/sheet/hot_ice/suicide_act(mob/living/carbon/user) + user.visible_message("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return FIRELOSS//dont you kids know that stuff is toxic? diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 245f734784e..dab60955c18 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -131,10 +131,10 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \ icon_state = "sheet-hairlesshide" item_state = "sheet-hairlesshide" -/obj/item/stack/sheet/wetleather - name = "wet leather" - desc = "This leather has been cleaned but still needs to be dried." - singular_name = "wet leather piece" +/obj/item/stack/sheet/wethide + name = "wet hide" + desc = "This hide has been cleaned but still needs to be dried." + singular_name = "wet hide piece" icon_state = "sheet-wetleather" item_state = "sheet-wetleather" var/wetness = 30 //Reduced when exposed to high temperautres @@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ //Step two - washing..... it's actually in washing machine code. //Step three - drying -/obj/item/stack/sheet/wetleather/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/stack/sheet/wethide/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() if(exposed_temperature >= drying_threshold_temperature) wetness-- @@ -241,7 +241,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ wetness = initial(wetness) use(1) -/obj/item/stack/sheet/wetleather/microwave_act(obj/machinery/microwave/MW) +/obj/item/stack/sheet/wethide/microwave_act(obj/machinery/microwave/MW) ..() new /obj/item/stack/sheet/leather(drop_location(), amount) qdel(src) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 684d578a4a4..d8128f0a60e 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -41,6 +41,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) sheettype = "sandstone" merge_type = /obj/item/stack/sheet/mineral/sandstone + walltype = /turf/closed/wall/mineral/sandstone /obj/item/stack/sheet/mineral/sandstone/get_main_recipes() . = ..() @@ -103,6 +104,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ point_value = 25 merge_type = /obj/item/stack/sheet/mineral/diamond material_type = /datum/material/diamond + walltype = /turf/closed/wall/mineral/diamond GLOBAL_LIST_INIT(diamond_recipes, list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ @@ -131,6 +133,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ point_value = 20 merge_type = /obj/item/stack/sheet/mineral/uranium material_type = /datum/material/uranium + walltype = /turf/closed/wall/mineral/uranium GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ @@ -159,6 +162,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ point_value = 20 merge_type = /obj/item/stack/sheet/mineral/plasma material_type = /datum/material/plasma + walltype = /turf/closed/wall/mineral/plasma /obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -201,6 +205,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ point_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold material_type = /datum/material/gold + walltype = /turf/closed/wall/mineral/gold GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ @@ -232,6 +237,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ merge_type = /obj/item/stack/sheet/mineral/silver material_type = /datum/material/silver tableVariant = /obj/structure/table/optable + walltype = /turf/closed/wall/mineral/silver GLOBAL_LIST_INIT(silver_recipes, list ( \ new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ @@ -262,6 +268,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ point_value = 50 merge_type = /obj/item/stack/sheet/mineral/bananium material_type = /datum/material/bananium + walltype = /turf/closed/wall/mineral/bananium GLOBAL_LIST_INIT(bananium_recipes, list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ @@ -290,6 +297,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \ point_value = 20 merge_type = /obj/item/stack/sheet/mineral/titanium material_type = /datum/material/titanium + walltype = /turf/closed/wall/mineral/titanium GLOBAL_LIST_INIT(titanium_recipes, list ( \ new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \ @@ -320,6 +328,7 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ point_value = 45 merge_type = /obj/item/stack/sheet/mineral/plastitanium material_flags = MATERIAL_NO_EFFECTS + walltype = /turf/closed/wall/mineral/plastitanium GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \ @@ -343,6 +352,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ throwforce = 2 grind_results = list(/datum/reagent/consumable/ice = 20) merge_type = /obj/item/stack/sheet/mineral/snow + walltype = /turf/closed/wall/mineral/snow GLOBAL_LIST_INIT(snow_recipes, list ( \ new/datum/stack_recipe("Snow wall", /turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \ @@ -442,6 +452,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ singular_name = "coal lump" merge_type = /obj/item/stack/sheet/mineral/coal grind_results = list(/datum/reagent/carbon = 20) + novariants = TRUE /obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index cc92934b671..1e18aa8dec3 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -89,7 +89,8 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 50), \ - new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50) + new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50), \ + new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 50) )) /obj/item/stack/sheet/metal @@ -155,7 +156,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ singular_name = "plasteel sheet" desc = "This sheet is an alloy of iron and plasma." icon_state = "sheet-plasteel" - item_state = "sheet-metal" + item_state = "sheet-plasteel" custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT) throwforce = 10 flags_1 = CONDUCT_1 @@ -235,6 +236,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ novariants = TRUE material_type = /datum/material/wood grind_results = list(/datum/reagent/cellulose = 20) //no lignocellulose or lignin reagents yet, + walltype = /turf/closed/wall/mineral/wood /obj/item/stack/sheet/mineral/wood/get_main_recipes() . = ..() @@ -541,7 +543,10 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ icon_state = "sheet-brass" item_state = "sheet-brass" icon = 'icons/obj/stack_objects.dmi' + lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' resistance_flags = FIRE_PROOF | ACID_PROOF + force = 5 throwforce = 10 max_amount = 50 throw_speed = 1 @@ -621,6 +626,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list( item_state = "sheet-plastic" custom_materials = list(/datum/material/plastic=MINERAL_MATERIAL_AMOUNT) throwforce = 7 + material_type = /datum/material/plastic merge_type = /obj/item/stack/sheet/plastic /obj/item/stack/sheet/plastic/fifty @@ -668,3 +674,14 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra desc = "A source of raw socialism, capable of bringing forth the prophesized Soviet Golem." icon_state = "sheet-stalinium" merge_type = /obj/item/stack/sheet/stalinium + +/obj/item/stack/sheet/meat + name = "meat sheet" + desc = "Something's bloody meat compressed into a nice solid sheet" + singular_name = "meat sheet" + icon_state = "sheet-meat" + material_flags = MATERIAL_COLOR + custom_materials = list(/datum/material/meat = MINERAL_MATERIAL_AMOUNT) + merge_type = /obj/item/stack/sheet/meat + material_type = /datum/material/meat + material_modifier = 1 //None of that wussy stuff diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 466a9db7c5c..53dfc44ca15 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -12,6 +12,8 @@ novariants = FALSE var/sheettype = null //this is used for girders in the creation of walls/false walls var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity. + ///What type of wall does this sheet spawn + var/walltype /obj/item/stack/sheet/Initialize(mapload, new_amount, merge) . = ..() diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm index ec5a1e2d98f..37084a8d886 100644 --- a/code/game/objects/items/stacks/tape.dm +++ b/code/game/objects/items/stacks/tape.dm @@ -27,10 +27,17 @@ user.visible_message("[user] begins wrapping [I] with [src].", "You begin wrapping [I] with [src].") if(do_after(user, 30, target=I)) + use(1) + if(istype(I, /obj/item/clothing/gloves/fingerless)) + var/obj/item/clothing/gloves/tackler/offbrand/O = new /obj/item/clothing/gloves/tackler/offbrand + to_chat(user, "You turn [I] into [O] with [src].") + QDEL_NULL(I) + user.put_in_hands(O) + return + I.embedding = conferred_embed I.AddElement(/datum/element/embed, I.embedding) to_chat(user, "You finish wrapping [I] with [src].") - use(1) I.name = "[prefix] [I.name]" if(istype(I, /obj/item/grenade)) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 02f33ad99b6..ad1f2fec3ec 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -333,3 +333,21 @@ icon_state = "tile_plastic" custom_materials = list(/datum/material/plastic=500) turf_type = /turf/open/floor/plastic + +/obj/item/stack/tile/material + name = "tile" + singular_name = "floor tile" + desc = "A tile of flooring." + icon_state = "material_tile" + turf_type = /turf/open/floor/material + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + +/obj/item/stack/tile/eighties + name = "retro tile" + singular_name = "retro floor tile" + desc = "A stack of floor tiles that remind you of an age of funk." + icon_state = "tile_eighties" + turf_type = /turf/open/floor/eighties + +/obj/item/stack/tile/eighties/loaded + amount = 15 diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index b82c64f602b..d1d17ca46ee 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -62,10 +62,6 @@ playsound(src, "rustle", 50, TRUE, -5) qdel(user) -/obj/item/storage/backpack/holding/singularity_act(current_size) - var/dist = max((current_size - 2),1) - explosion(src.loc,(dist),(dist*2),(dist*4)) - /obj/item/storage/backpack/santabag name = "Santa's Gift Bag" desc = "Space Santa uses this to deliver presents to all the nice children in space in Christmas! Wow, it's pretty big!" @@ -302,7 +298,10 @@ icon_state = "satchel-flat" item_state = "satchel-flat" w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself. - level = 1 + +/obj/item/storage/backpack/satchel/flat/Initialize(mapload) + . = ..() + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE) /obj/item/storage/backpack/satchel/flat/ComponentInitialize() . = ..() @@ -310,18 +309,6 @@ STR.max_combined_w_class = 15 STR.set_holdable(null, list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks) -/obj/item/storage/backpack/satchel/flat/hide(intact) - if(intact) - invisibility = INVISIBILITY_OBSERVER - anchored = TRUE //otherwise you can start pulling, cover it, and drag around an invisible backpack. - icon_state = "[initial(icon_state)]2" - ADD_TRAIT(src, TRAIT_T_RAY_VISIBLE, TRAIT_GENERIC) - else - invisibility = initial(invisibility) - anchored = FALSE - icon_state = initial(icon_state) - REMOVE_TRAIT(src, TRAIT_T_RAY_VISIBLE, TRAIT_GENERIC) - /obj/item/storage/backpack/satchel/flat/PopulateContents() var/datum/supply_pack/costumes_toys/randomised/contraband/C = new for(var/i in 1 to 2) @@ -606,3 +593,14 @@ new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/bikehorn(src) new /obj/item/implanter/sad_trombone(src) + +/obj/item/storage/backpack/henchmen + name = "wings" + desc = "Granted to the henchmen who deserve it. This probably doesn't include you." + icon_state = "henchmen" + item_state = "henchmen" + +/obj/item/storage/backpack/duffelbag/cops + name = "police bag" + desc = "A large duffel bag for holding extra police gear." + slowdown = 0 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 747fecd5bdd..a0fda96a695 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -300,7 +300,7 @@ * Trays - Agouri */ /obj/item/storage/bag/tray - name = "tray" + name = "serving tray" icon = 'icons/obj/food/containers.dmi' icon_state = "tray" desc = "A metal tray to lay food on." @@ -358,6 +358,12 @@ . = ..() update_icon() +/obj/item/storage/bag/tray/cafeteria + name = "cafeteria tray" + icon = 'icons/obj/food/containers.dmi' + icon_state = "foodtray" + desc = "A cheap metal tray to pile today's meal onto." + /* * Chemistry bag */ diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index b5891a64917..cdc4841e194 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -537,7 +537,7 @@ /obj/item/melee/flyswatter, /obj/item/assembly/mousetrap, /obj/item/paint/paint_remover, - /obj/item/twohanded/broom + /obj/item/pushbroom )) /obj/item/storage/belt/janitor/full/PopulateContents() diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index b72ccca3f27..36312a5198a 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", if(!H.can_read(src)) return FALSE // If H is the Chaplain, we can set the icon_state of the bible (but only once!) - if(!GLOB.bible_icon_state && H.job == "Chaplain") + if(!GLOB.bible_icon_state && H.mind.holy_role == HOLY_ROLE_HIGHPRIEST) var/dat = "Pick Bible Style

Pick a bible style

" for(var/i in 1 to GLOB.biblestates.len) var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i]) @@ -91,7 +91,12 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", SSblackbox.record_feedback("text", "religion_book", 1, "[biblename]") usr << browse(null, "window=editicon") -/obj/item/storage/book/bible/proc/bless(mob/living/carbon/human/H, mob/living/user) +/obj/item/storage/book/bible/proc/bless(mob/living/L, mob/living/user) + if(GLOB.religious_sect) + return GLOB.religious_sect.sect_bless(L,user) + if(!ishuman(L)) + return + var/mob/living/carbon/human/H = L for(var/X in H.bodyparts) var/obj/item/bodypart/BP = X if(BP.status == BODYPART_ROBOTIC) @@ -125,7 +130,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", return var/chaplain = 0 - if(user.mind && (user.mind.isholy)) + if(user.mind && (user.mind.holy_role)) chaplain = 1 if(!chaplain) @@ -143,7 +148,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", to_chat(user, "You can't heal yourself!") return - if(ishuman(M) && prob(60) && bless(M, user)) + if(prob(60) && bless(M, user)) smack = 0 else if(iscarbon(M)) var/mob/living/carbon/C = M @@ -167,10 +172,10 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", return if(isfloorturf(A)) to_chat(user, "You hit the floor with the bible.") - if(user.mind && (user.mind.isholy)) + if(user.mind && (user.mind.holy_role)) for(var/obj/effect/rune/R in orange(2,user)) R.invisibility = 0 - if(user.mind && (user.mind.isholy)) + if(user?.mind?.holy_role) if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder to_chat(user, "You bless [A].") var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) @@ -187,8 +192,8 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", B.name = name B.icon_state = icon_state B.item_state = item_state - if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user)) - var/obj/item/twohanded/required/cult_bastard/sword = A + if(istype(A, /obj/item/cult_bastard) && !iscultist(user)) + var/obj/item/cult_bastard/sword = A to_chat(user, "You begin to exorcise [sword].") playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) if(do_after(user, 40, target = sword)) @@ -202,7 +207,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", SS.release_shades(user) qdel(SS) new /obj/item/nullrod/claymore(get_turf(sword)) - user.visible_message("[user] has purified [sword]!") + user.visible_message("[user] purifies [sword]!") qdel(sword) else if(istype(A, /obj/item/soulstone) && !iscultist(user)) var/obj/item/soulstone/SS = A @@ -223,7 +228,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", for(var/mob/living/simple_animal/shade/EX in SS) EX.icon_state = "ghost1" EX.name = "Purified [initial(EX.name)]" - user.visible_message("[user] has purified [SS]!") + user.visible_message("[user] purifies [SS]!") else if(istype(A, /obj/item/nullrod/scythe/talking)) var/obj/item/nullrod/scythe/talking/sword = A to_chat(user, "You begin to exorcise [sword]...") @@ -236,7 +241,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", sword.possessed = FALSE //allows the chaplain (or someone else) to reroll a new spirit for their sword sword.name = initial(sword.name) REMOVE_TRAIT(sword, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) //in case the "sword" is a possessed dummy - user.visible_message("[user] has exorcised [sword]!", \ + user.visible_message("[user] exorcises [sword]!", \ "You successfully exorcise [sword]!") /obj/item/storage/book/bible/booze @@ -260,7 +265,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", /obj/item/storage/book/bible/syndicate/attack_self(mob/living/carbon/human/H) if (uses) - H.mind.isholy = TRUE + H.mind.holy_role = HOLY_ROLE_PRIEST uses -= 1 to_chat(H, "You try to open the book AND IT BITES YOU!") playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 6ca54119cf5..1881c9b7d40 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -957,6 +957,13 @@ return 0 return ..() +/obj/item/storage/box/papersack/meat + desc = "It's slightly moist and smells like a slaughterhouse." + +/obj/item/storage/box/papersack/meat/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/reagent_containers/food/snacks/meat/slab(src) + #undef NODESIGN #undef NANOTRASEN #undef SYNDI @@ -1297,6 +1304,7 @@ name = "bubblegum packet" desc = "The packaging is entirely in japanese, apparently. You can't make out a single word of it." icon_state = "bubblegum_generic" + w_class = WEIGHT_CLASS_TINY illustration = null foldable = null custom_price = 120 diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index bd5e96939c7..797ae7cfbcc 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -289,6 +289,7 @@ w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/cigarettes.dmi' icon_state = "cig_paper_pack" + ///The value in here has NOTHING to do with icons. It needs to be this for the proper examine. icon_type = "rolling paper" spawn_type = /obj/item/rollingpaper custom_price = 25 @@ -299,6 +300,10 @@ STR.max_items = 10 STR.set_holdable(list(/obj/item/rollingpaper)) +///Overrides to do nothing because fancy boxes are fucking insane. +/obj/item/storage/fancy/rollingpapers/update_icon_state() + return + /obj/item/storage/fancy/rollingpapers/update_overlays() . = ..() if(!contents.len) diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index e56a04c6254..51dc47103d5 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -54,7 +54,7 @@ desc += "It appears to be broken." icon_state = src.icon_broken if(user) - visible_message("\The [src] has been broken by [user] with an electromagnetic card!") + visible_message("\The [src] is broken by [user] with an electromagnetic card!") return /obj/item/storage/lockbox/Entered() diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index f168b5daecf..c3b5732658d 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -231,6 +231,41 @@ new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) +/obj/item/storage/toolbox/infiltrator + name = "insidious case" + desc = "Bearing the emblem of the Syndicate, this case contains a full infiltrator stealth suit, and has enough room to fit weaponry if necessary." + icon_state = "infiltrator_case" + item_state = "infiltrator_case" + force = 15 + throwforce = 18 + w_class = WEIGHT_CLASS_NORMAL + has_latches = FALSE + +/obj/item/storage/toolbox/infiltrator/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 10 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.set_holdable(list( + /obj/item/clothing/head/helmet/infiltrator, + /obj/item/clothing/suit/armor/vest/infiltrator, + /obj/item/clothing/under/syndicate/bloodred, + /obj/item/clothing/gloves/color/latex/nitrile/infiltrator, + /obj/item/clothing/mask/infiltrator, + /obj/item/clothing/shoes/combat/sneakboots, + /obj/item/gun/ballistic/automatic/pistol, + /obj/item/gun/ballistic/revolver, + /obj/item/ammo_box + )) + +/obj/item/storage/toolbox/infiltrator/PopulateContents() + new /obj/item/clothing/head/helmet/infiltrator(src) + new /obj/item/clothing/suit/armor/vest/infiltrator(src) + new /obj/item/clothing/under/syndicate/bloodred(src) + new /obj/item/clothing/gloves/color/latex/nitrile/infiltrator(src) + new /obj/item/clothing/mask/infiltrator(src) + new /obj/item/clothing/shoes/combat/sneakboots(src) + //floorbot assembly /obj/item/storage/toolbox/attackby(obj/item/stack/tile/plasteel/T, mob/user, params) var/list/allowed_toolbox = list(/obj/item/storage/toolbox/emergency, //which toolboxes can be made into floorbots diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index f76f2725173..7c9d15d4543 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -6,7 +6,7 @@ if("recon") new /obj/item/clothing/glasses/thermal/xray(src) // ~8 tc? new /obj/item/storage/briefcase/launchpad(src) //6 tc - new /obj/item/twohanded/binoculars(src) // 2 tc? + new /obj/item/binoculars(src) // 2 tc? new /obj/item/encryptionkey/syndicate(src) // 2 tc new /obj/item/storage/box/syndie_kit/space(src) //4 tc new /obj/item/grenade/syndieminibomb/concussion/frag(src) // ~2 tc each? @@ -138,7 +138,7 @@ new /obj/item/chameleon(src) // 7 tc if("darklord") - new /obj/item/twohanded/dualsaber(src) + new /obj/item/dualsaber(src) new /obj/item/dnainjector/telemut/darkbundle(src) new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) new /obj/item/card/id/syndicate(src) @@ -530,6 +530,12 @@ for(var/i in 1 to 3) new /obj/item/grenade/spawnergrenade/buzzkill(src) +/obj/item/storage/box/syndie_kit/sleepytime/PopulateContents() + new /obj/item/clothing/under/syndicate/bloodred/sleepytime(src) + new /obj/item/reagent_containers/food/drinks/mug/coco(src) + new /obj/item/toy/plush/carpplushie(src) + new /obj/item/bedsheet/syndie(src) + ///Subtype for the sabotage bundle. Contains three C4, two X4 and 6 signalers /obj/item/storage/backpack/duffelbag/syndie/sabotage diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 7c74edcc127..96480efd8b1 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -198,8 +198,8 @@ else to_chat(user, "The baton is still charging!") else - M.visible_message("[user] has prodded [M] with [src]. Luckily it was off.", \ - "[user] has prodded you with [src]. Luckily it was off") + M.visible_message("[user] prods [M] with [src]. Luckily it was off.", \ + "[user] prods you with [src]. Luckily it was off.") else if(turned_on) if(attack_cooldown_check <= world.time) @@ -210,6 +210,9 @@ /obj/item/melee/baton/proc/baton_effect(mob/living/L, mob/user) if(shields_blocked(L, user)) return FALSE + if(HAS_TRAIT_FROM(L, TRAIT_IWASBATONED, user)) //no doublebaton abuse anon! + to_chat(user, "[L] manages to avoid the attack!") + return FALSE if(iscyborg(loc)) var/mob/living/silicon/robot/R = loc if(!R || !R.cell || !R.cell.use(cell_hit_cost)) @@ -217,13 +220,12 @@ else if(!deductcharge(cell_hit_cost)) return FALSE - /// After a target is hit, we do a chunk of stamina damage, along with other effects. /// After a period of time, we then check to see what stun duration we give. L.Jitter(20) L.confused = max(confusion_amt, L.confused) L.stuttering = max(8, L.stuttering) - L.apply_damage(stamina_loss_amt, STAMINA) + L.apply_damage(stamina_loss_amt, STAMINA, BODY_ZONE_CHEST) SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) addtimer(CALLBACK(src, .proc/apply_stun_effect_end, L), apply_stun_delay) @@ -231,8 +233,8 @@ if(user) L.lastattacker = user.real_name L.lastattackerckey = user.ckey - L.visible_message("[user] has stunned [L] with [src]!", \ - "[user] has stunned you with [src]!") + L.visible_message("[user] stuns [L] with [src]!", \ + "[user] stuns you with [src]!") log_combat(user, L, "stunned") playsound(src, stun_sound, 50, TRUE, -1) @@ -243,6 +245,9 @@ attack_cooldown_check = world.time + attack_cooldown + ADD_TRAIT(L, TRAIT_IWASBATONED, user) + addtimer(TRAIT_CALLBACK_REMOVE(L, TRAIT_IWASBATONED, user), attack_cooldown) + return 1 /// After the initial stun period, we check to see if the target needs to have the stun applied. diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index e44b22581c8..eb9123e5cea 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -17,6 +17,7 @@ /obj/item/tank/jetpack/Initialize() . = ..() ion_trail = new + ion_trail.auto_process = FALSE ion_trail.set_up(src) /obj/item/tank/jetpack/populate_gas() @@ -51,12 +52,15 @@ /obj/item/tank/jetpack/proc/turn_on(mob/user) + if(!allow_thrust(0.01, user)) + return on = TRUE icon_state = "[initial(icon_state)]-on" ion_trail.start() RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react) + RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, .proc/pre_move_react) if(full_speed) - user.add_movespeed_modifier(MOVESPEED_ID_JETPACK, priority=100, multiplicative_slowdown=-0.5, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK) + user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) /obj/item/tank/jetpack/proc/turn_off(mob/user) on = FALSE @@ -64,14 +68,29 @@ icon_state = initial(icon_state) ion_trail.stop() UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - user.remove_movespeed_modifier(MOVESPEED_ID_JETPACK) + UnregisterSignal(user, COMSIG_MOVABLE_PRE_MOVE) + user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) /obj/item/tank/jetpack/proc/move_react(mob/user) - allow_thrust(0.01, user) + if(!on)//If jet dont work, it dont work + return + if(!user)//Don't allow jet self using + return + if(!isturf(user.loc))//You can't use jet in nowhere or from mecha/closet + return + if(!(user.is_flying() || user.is_floating()) || user.buckled)//You don't want use jet in gravity or while buckled. + return + if(user.pulledby)//You don't must use jet if someone pull you + return + if(user.throwing)//You don't must use jet if you thrown + return + if(length(user.client.keys_held & user.client.movement_keys))//You use jet when press keys. yes. + allow_thrust(0.01, user) + +/obj/item/tank/jetpack/proc/pre_move_react(mob/user) + ion_trail.oldposition = get_turf(src) /obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user) - if(!on) - return if((num < 0.005 || air_contents.total_moles() < num)) turn_off(user) return @@ -83,6 +102,7 @@ var/turf/T = get_turf(user) T.assume_air(removed) + ion_trail.generate_effect() return TRUE @@ -122,6 +142,7 @@ var/turf/T = get_turf(user) T.assume_air(removed) + ion_trail.generate_effect() return TRUE diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 16283852de7..015add093bc 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -182,10 +182,6 @@ else if(pressure == "max") pressure = TANK_MAX_RELEASE_PRESSURE . = TRUE - else if(pressure == "input") - pressure = input("New release pressure ([TANK_MIN_RELEASE_PRESSURE]-[TANK_MAX_RELEASE_PRESSURE] kPa):", name, distribute_pressure) as num|null - if(!isnull(pressure) && !..()) - . = TRUE else if(text2num(pressure) != null) pressure = text2num(pressure) . = TRUE diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 9242f52270c..31b0dee6b11 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -203,7 +203,7 @@ return RegisterSignal(created[1], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) //Gosh darn it kevinz. RegisterSignal(created[2], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) - try_move_adjacent(created[1]) + try_move_adjacent(created[1], user.dir) active_portal_pairs[created[1]] = created[2] var/obj/effect/portal/c1 = created[1] var/obj/effect/portal/c2 = created[2] diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index db3aa3b8fa2..be9f8387b35 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -30,7 +30,6 @@ var/change_icons = 1 var/can_off_process = 0 var/light_intensity = 2 //how powerful the emitted light is when used. - var/progress_flash_divisor = 10 var/burned_fuel_for = 0 //when fuel was last removed heat = 3800 tool_behaviour = TOOL_WELDER @@ -45,6 +44,7 @@ /obj/item/weldingtool/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) + AddElement(/datum/element/tool_flash, light_intensity) /obj/item/weldingtool/update_icon_state() if(welding) @@ -245,22 +245,6 @@ /obj/item/weldingtool/proc/isOn() return welding -// When welding is about to start, run a normal tool_use_check, then flash a mob if it succeeds. -/obj/item/weldingtool/tool_start_check(mob/living/user, amount=0) - . = tool_use_check(user, amount) - if(. && user && get_dist(get_turf(src), get_turf(user)) <= 1) - user.flash_act(light_intensity) - -// Flash the user during welding progress -/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - . = ..() - if(. && user && get_dist(get_turf(src), get_turf(user)) <= 1) - if (progress_flash_divisor == 0) - user.flash_act(min(light_intensity,1)) - progress_flash_divisor = initial(progress_flash_divisor) - else - progress_flash_divisor-- - // If welding tool ran out of fuel during a construction task, construction fails. /obj/item/weldingtool/tool_use_check(mob/living/user, amount) if(!isOn() || !check_fuel()) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 95db61873df..6a49738d3c8 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -303,7 +303,7 @@ return else to_chat(user, "You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.") - var/obj/item/twohanded/dualsaber/toy/newSaber = new /obj/item/twohanded/dualsaber/toy(user.loc) + var/obj/item/dualsaber/toy/newSaber = new /obj/item/dualsaber/toy(user.loc) if(hacked) // That's right, we'll only check the "original" "sword". newSaber.hacked = TRUE newSaber.saber_color = "rainbow" @@ -387,21 +387,20 @@ /* * Subtype of Double-Bladed Energy Swords */ -/obj/item/twohanded/dualsaber/toy +/obj/item/dualsaber/toy name = "double-bladed toy sword" desc = "A cheap, plastic replica of TWO energy swords. Double the fun!" force = 0 throwforce = 0 throw_speed = 3 throw_range = 5 - force_unwielded = 0 - force_wielded = 0 + two_hand_force = 0 attack_verb = list("attacked", "struck", "hit") -/obj/item/twohanded/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) return 0 -/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles +/obj/item/dualsaber/toy/IsReflect() //Stops Toy Dualsabers from reflecting energy projectiles return 0 /obj/item/toy/katana @@ -450,6 +449,7 @@ pop_burst() /obj/item/toy/snappop/Crossed(H as mob|obj) + . = ..() if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm deleted file mode 100644 index f03ea924ba0..00000000000 --- a/code/game/objects/items/twohanded.dm +++ /dev/null @@ -1,917 +0,0 @@ -/* Two-handed Weapons - * Contains: - * Twohanded - * Fireaxe - * Double-Bladed Energy Swords - * Spears - * CHAINSAWS - * Bone Axe and Spear - */ - -/*################################################################## -##################### TWO HANDED WEAPONS BE HERE~ -Agouri :3 ######## -####################################################################*/ - -//Rewrote TwoHanded weapons stuff and put it all here. Just copypasta fireaxe to make new ones ~Carn -//This rewrite means we don't have two variables for EVERY item which are used only by a few weapons. -//It also tidies stuff up elsewhere. - - - - -/* - * Twohanded - */ -/obj/item/twohanded - var/wielded = 0 - var/force_unwielded = 0 - var/force_wielded = 0 - var/wieldsound = null - var/unwieldsound = null - -/obj/item/twohanded/proc/unwield(mob/living/carbon/user, show_message = TRUE) - if(!wielded || !user) - return - wielded = 0 - if(!isnull(force_unwielded)) - force = force_unwielded - var/sf = findtext(name, " (Wielded)", -10)//10 == length(" (Wielded)") - if(sf) - name = copytext(name, 1, sf) - else //something wrong - name = "[initial(name)]" - update_icon() - if(user.get_item_by_slot(ITEM_SLOT_BACK) == src) - user.update_inv_back() - else - user.update_inv_hands() - if(show_message) - if(iscyborg(user)) - to_chat(user, "You free up your module.") - else - to_chat(user, "You are now carrying [src] with one hand.") - if(unwieldsound) - playsound(loc, unwieldsound, 50, TRUE) - var/obj/item/twohanded/offhand/O = user.get_inactive_held_item() - if(O && istype(O)) - O.unwield() - return - -/obj/item/twohanded/proc/wield(mob/living/carbon/user) - if(wielded) - return - if(ismonkey(user)) - to_chat(user, "It's too heavy for you to wield fully.") - return - if(user.get_inactive_held_item()) - to_chat(user, "You need your other hand to be empty!") - return - if(user.get_num_arms() < 2) - to_chat(user, "You don't have enough intact hands.") - return - wielded = 1 - if(force_wielded) - force = force_wielded - name = "[name] (Wielded)" - update_icon() - if(iscyborg(user)) - to_chat(user, "You dedicate your module to [src].") - else - to_chat(user, "You grab [src] with both hands.") - if (wieldsound) - playsound(loc, wieldsound, 50, TRUE) - var/obj/item/twohanded/offhand/O = new(user) ////Let's reserve his other hand~ - O.name = "[name] - offhand" - O.desc = "Your second grip on [src]." - O.wielded = TRUE - user.put_in_inactive_hand(O) - return - -/obj/item/twohanded/dropped(mob/user) - . = ..() - //handles unwielding a twohanded weapon when dropped as well as clearing up the offhand - if(!wielded) - return - unwield(user) - -/obj/item/twohanded/attack_self(mob/user) - . = ..() - if(wielded) //Trying to unwield it - unwield(user) - else //Trying to wield it - wield(user) - -/obj/item/twohanded/equip_to_best_slot(mob/M) - if(..()) - if(istype(src, /obj/item/twohanded/required)) - return // unwield forces twohanded-required items to be dropped. - unwield(M) - return - -/obj/item/twohanded/equipped(mob/user, slot) - ..() - if(!user.is_holding(src) && wielded && !istype(src, /obj/item/twohanded/required)) - unwield(user) - -///////////OFFHAND/////////////// -/obj/item/twohanded/offhand - name = "offhand" - icon_state = "offhand" - w_class = WEIGHT_CLASS_HUGE - item_flags = ABSTRACT - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - -/obj/item/twohanded/offhand/Destroy() - wielded = FALSE - return ..() - -/obj/item/twohanded/offhand/dropped(mob/living/user, show_message = TRUE) //Only utilized by dismemberment since you can't normally switch to the offhand to drop it. - SHOULD_CALL_PARENT(0) - var/obj/I = user.get_active_held_item() - if(I && istype(I, /obj/item/twohanded)) - var/obj/item/twohanded/thw = I - thw.unwield(user, show_message) - if(istype(thw, /obj/item/twohanded/required)) - user.dropItemToGround(thw) - if(!QDELETED(src)) - qdel(src) - -/obj/item/twohanded/offhand/unwield() - if(wielded)//Only delete if we're wielded - wielded = FALSE - qdel(src) - -/obj/item/twohanded/offhand/wield() - if(wielded)//Only delete if we're wielded - wielded = FALSE - qdel(src) - -/obj/item/twohanded/offhand/attack_self(mob/living/carbon/user) //You should never be able to do this in standard use of two handed items. This is a backup for lingering offhands. - var/obj/item/twohanded/O = user.get_inactive_held_item() - if (istype(O) && !istype(O, /obj/item/twohanded/offhand/)) //If you have a proper item in your other hand that the offhand is for, do nothing. This should never happen. - return - if (QDELETED(src)) - return - qdel(src) //If it's another offhand, or literally anything else, qdel. If I knew how to add logging messages I'd put one here. - -///////////Two hand required objects/////////////// -//This is for objects that require two hands to even pick up -/obj/item/twohanded/required - w_class = WEIGHT_CLASS_HUGE - -/obj/item/twohanded/required/attack_self() - return - -/obj/item/twohanded/required/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) - if(wielded && !slot_flags) - if(!disable_warning) - to_chat(M, "[src] is too cumbersome to carry with anything but your hands!") - return 0 - return ..() - -/obj/item/twohanded/required/attack_hand(mob/user)//Can't even pick it up without both hands empty - var/obj/item/twohanded/required/H = user.get_inactive_held_item() - if(get_dist(src,user) > 1) - return - if(H != null) - to_chat(user, "[src] is too cumbersome to carry in one hand!") - return - if(loc != user) - wield(user) - . = ..() - -/obj/item/twohanded/required/equipped(mob/user, slot) - . = ..() - if(slot_flags & slot) - var/datum/O = user.is_holding_item_of_type(/obj/item/twohanded/offhand) - if(!O || QDELETED(O)) - return - qdel(O) - return - if(slot == ITEM_SLOT_HANDS) - wield(user) - else - unwield(user) - -/obj/item/twohanded/required/dropped(mob/living/user, show_message = TRUE) - unwield(user, show_message) - ..() - -/obj/item/twohanded/required/wield(mob/living/carbon/user) - ..() - if(!wielded) - user.dropItemToGround(src) - -/obj/item/twohanded/required/unwield(mob/living/carbon/user, show_message = TRUE) - if(!wielded) - return - if(show_message) - to_chat(user, "You drop [src].") - ..(user, FALSE) - -/* - * Fireaxe - */ -/obj/item/twohanded/fireaxe // DEM AXES MAN, marker -Agouri - icon_state = "fireaxe0" - lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' - name = "fire axe" - desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" - force = 5 - throwforce = 15 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - force_unwielded = 5 - force_wielded = 24 - attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) - resistance_flags = FIRE_PROOF - -/obj/item/twohanded/fireaxe/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools - -/obj/item/twohanded/fireaxe/update_icon_state() //Currently only here to fuck with the on-mob icons. - icon_state = "fireaxe[wielded]" - -/obj/item/twohanded/fireaxe/suicide_act(mob/user) - user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!") - return (BRUTELOSS) - -/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!proximity) - return - if(wielded) //destroys windows and grilles in one hit - if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) - var/obj/structure/W = A - W.obj_destruction("fireaxe") - - -/* - * Double-Bladed Energy Swords - Cheridan - */ -/obj/item/twohanded/dualsaber - icon = 'icons/obj/transforming_energy.dmi' - icon_state = "dualsaber0" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "double-bladed energy sword" - desc = "Handle with care." - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - var/w_class_on = WEIGHT_CLASS_BULKY - force_unwielded = 3 - force_wielded = 34 - wieldsound = 'sound/weapons/saberon.ogg' - unwieldsound = 'sound/weapons/saberoff.ogg' - hitsound = "swing_hit" - armour_penetration = 35 - var/saber_color = "green" - light_color = "#00ff00"//green - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - block_chance = 75 - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - var/hacked = FALSE - var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD - var/list/possible_colors = list("red", "blue", "green", "purple") - -/obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user) - if(wielded) - user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!") - - var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code - var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) - B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea - var/randdir - for(var/i in 1 to 24)//like a headless chicken! - if(user.is_holding(src)) - randdir = pick(GLOB.alldirs) - user.Move(get_step(user, randdir),randdir) - user.emote("spin") - if (i == 3 && myhead) - myhead.drop_limb() - sleep(3) - else - user.visible_message("[user] panics and starts choking to death!") - return OXYLOSS - - - else - user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!") - return BRUTELOSS - -/obj/item/twohanded/dualsaber/Initialize() - . = ..() - if(LAZYLEN(possible_colors)) - saber_color = pick(possible_colors) - switch(saber_color) - if("red") - light_color = LIGHT_COLOR_RED - if("green") - light_color = LIGHT_COLOR_GREEN - if("blue") - light_color = LIGHT_COLOR_LIGHT_CYAN - if("purple") - light_color = LIGHT_COLOR_LAVENDER - -/obj/item/twohanded/dualsaber/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/twohanded/dualsaber/update_icon_state() - if(wielded) - icon_state = "dualsaber[saber_color][wielded]" - else - icon_state = "dualsaber0" - -/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user) - if(user.has_dna()) - if(user.dna.check_mutation(HULK)) - to_chat(user, "You grip the blade too hard and accidentally close it!") - unwield() - return - ..() - if(HAS_TRAIT(user, TRAIT_CLUMSY) && (wielded) && prob(40)) - impale(user) - return - if((wielded) && prob(50)) - INVOKE_ASYNC(src, .proc/jedi_spin, user) - -/obj/item/twohanded/dualsaber/proc/jedi_spin(mob/living/user) - dance_rotate(user, CALLBACK(user, /mob.proc/dance_flip)) - -/obj/item/twohanded/dualsaber/proc/impale(mob/living/user) - to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") - if (force_wielded) - user.take_bodypart_damage(20,25,check_armor = TRUE) - else - user.adjustStaminaLoss(25) - -/obj/item/twohanded/dualsaber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - return ..() - return 0 - -/obj/item/twohanded/dualsaber/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds. - if(M.has_dna()) - if(M.dna.check_mutation(HULK)) - to_chat(M, "You lack the grace to wield this!") - return - ..() - if(wielded) - sharpness = IS_SHARP - w_class = w_class_on - hitsound = 'sound/weapons/blade1.ogg' - START_PROCESSING(SSobj, src) - set_light(brightness_on) - -/obj/item/twohanded/dualsaber/unwield() //Specific unwield () to switch hitsounds. - sharpness = initial(sharpness) - w_class = initial(w_class) - ..() - hitsound = "swing_hit" - STOP_PROCESSING(SSobj, src) - set_light(0) - -/obj/item/twohanded/dualsaber/process() - if(wielded) - if(hacked) - light_color = pick(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER) - open_flame() - else - STOP_PROCESSING(SSobj, src) - -/obj/item/twohanded/dualsaber/IsReflect() - if(wielded) - return 1 - -/obj/item/twohanded/dualsaber/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly - if(!wielded) - return "" - var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.wear_mask) - in_mouth = ", barely missing [user.p_their()] nose" - . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." - playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) - add_fingerprint(user) - // Light your candles while spinning around the room - INVOKE_ASYNC(src, .proc/jedi_spin, user) - -/obj/item/twohanded/dualsaber/green - possible_colors = list("green") - -/obj/item/twohanded/dualsaber/red - possible_colors = list("red") - -/obj/item/twohanded/dualsaber/blue - possible_colors = list("blue") - -/obj/item/twohanded/dualsaber/purple - possible_colors = list("purple") - -/obj/item/twohanded/dualsaber/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, "2XRNBW_ENGAGE") - saber_color = "rainbow" - update_icon() - else - to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") - else - return ..() - -//spears -/obj/item/twohanded/spear - icon_state = "spearglass0" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "spear" - desc = "A haphazardly-constructed yet still deadly weapon of ancient design." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - force_unwielded = 10 - force_wielded = 18 - throwforce = 20 - throw_speed = 4 - embedding = list("impact_pain_mult" = 3) - armour_penetration = 10 - custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) - var/war_cry = "AAAAARGH!!!" - var/icon_prefix = "spearglass" - -/obj/item/twohanded/spear/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. - AddComponent(/datum/component/jousting) - -/obj/item/twohanded/spear/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") - return BRUTELOSS - -/obj/item/twohanded/spear/update_icon_state() - icon_state = "[icon_prefix][wielded]" - -/obj/item/twohanded/spear/CheckParts(list/parts_list) - var/obj/item/shard/tip = locate() in parts_list - if (istype(tip, /obj/item/shard/plasma)) - force_wielded = 19 - force_unwielded = 11 - throwforce = 21 - icon_prefix = "spearplasma" - update_icon() - qdel(tip) - ..() - - -/obj/item/twohanded/spear/explosive - name = "explosive lance" - var/obj/item/grenade/explosive = null - -/obj/item/twohanded/spear/explosive/Initialize(mapload) - . = ..() - set_explosive(new /obj/item/grenade/iedcasing()) //For admin-spawned explosive lances - - -/obj/item/twohanded/spear/explosive/proc/set_explosive(obj/item/grenade/G) - if(explosive) - QDEL_NULL(explosive) - G.forceMove(src) - explosive = G - desc = "A makeshift spear with [G] attached to it" - -/obj/item/twohanded/spear/explosive/CheckParts(list/parts_list) - var/obj/item/grenade/G = locate() in parts_list - if(G) - var/obj/item/twohanded/spear/lancePart = locate() in parts_list - force_wielded = lancePart.force_wielded - force_unwielded = lancePart.force_unwielded - throwforce = lancePart.throwforce - icon_prefix = lancePart.icon_prefix - parts_list -= G - parts_list -= lancePart - set_explosive(G) - qdel(lancePart) - ..() - -/obj/item/twohanded/spear/explosive/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") - user.say("[war_cry]", forced="spear warcry") - explosive.forceMove(user) - explosive.prime() - user.gib() - qdel(src) - return BRUTELOSS - -/obj/item/twohanded/spear/explosive/examine(mob/user) - . = ..() - . += "Alt-click to set your war cry." - -/obj/item/twohanded/spear/explosive/update_icon_state() - icon_state = "spearbomb[wielded]" - -/obj/item/twohanded/spear/explosive/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) - ..() - if(istype(user) && loc == user) - var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) - if(input) - src.war_cry = input - -/obj/item/twohanded/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) - . = ..() - if(!proximity) - return - if(wielded) - user.say("[war_cry]", forced="spear warcry") - explosive.forceMove(AM) - explosive.prime() - qdel(src) - -// CHAINSAW -/obj/item/twohanded/required/chainsaw - name = "chainsaw" - desc = "A versatile power tool. Useful for limbing trees and delimbing humans." - icon_state = "chainsaw_off" - lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - flags_1 = CONDUCT_1 - force = 13 - var/force_on = 24 - w_class = WEIGHT_CLASS_HUGE - throwforce = 13 - throw_speed = 2 - throw_range = 4 - custom_materials = list(/datum/material/iron=13000) - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = "swing_hit" - sharpness = IS_SHARP - actions_types = list(/datum/action/item_action/startchainsaw) - tool_behaviour = TOOL_SAW - toolspeed = 0.5 - var/on = FALSE - -/obj/item/twohanded/required/chainsaw/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE) - -/obj/item/twohanded/required/chainsaw/suicide_act(mob/living/carbon/user) - if(on) - user.visible_message("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src, 'sound/weapons/chainsawhit.ogg', 100, TRUE) - var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) - if(myhead) - myhead.dismember() - else - user.visible_message("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src, 'sound/weapons/genhit1.ogg', 100, TRUE) - return(BRUTELOSS) - -/obj/item/twohanded/required/chainsaw/attack_self(mob/user) - on = !on - to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]") - force = on ? force_on : initial(force) - throwforce = on ? force_on : initial(force) - icon_state = "chainsaw_[on ? "on" : "off"]" - var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) - butchering.butchering_enabled = on - - if(on) - hitsound = 'sound/weapons/chainsawhit.ogg' - else - hitsound = "swing_hit" - - if(src == user.get_active_held_item()) //update inhands - user.update_inv_hands() - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/twohanded/required/chainsaw/get_dismemberment_chance() - if(wielded) - . = ..() - -/obj/item/twohanded/required/chainsaw/doomslayer - name = "THE GREAT COMMUNICATOR" - desc = "VRRRRRRR!!!" - armour_penetration = 100 - force_on = 30 - -/obj/item/twohanded/required/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("Ranged attacks just make [owner] angrier!") - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) - return 1 - return 0 - -//GREY TIDE -/obj/item/twohanded/spear/grey_tide - name = "\improper Grey Tide" - desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces." - force_unwielded = 15 - force_wielded = 25 - attack_verb = list("gored") - -/obj/item/twohanded/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) - . = ..() - if(!proximity) - return - user.faction |= "greytide([REF(user)])" - if(isliving(AM)) - var/mob/living/L = AM - if(istype (L, /mob/living/simple_animal/hostile/illusion)) - return - if(!L.stat && prob(50)) - var/mob/living/simple_animal/hostile/illusion/M = new(user.loc) - M.faction = user.faction.Copy() - M.Copy_Parent(user, 100, user.health/2.5, 12, 30) - M.GiveTarget(L) - -/obj/item/twohanded/pitchfork - icon_state = "pitchfork0" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "pitchfork" - desc = "A simple tool used for moving hay." - force = 7 - throwforce = 15 - w_class = WEIGHT_CLASS_BULKY - force_unwielded = 7 - force_wielded = 15 - attack_verb = list("attacked", "impaled", "pierced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) - resistance_flags = FIRE_PROOF - -/obj/item/twohanded/pitchfork/demonic - name = "demonic pitchfork" - desc = "A red pitchfork, it looks like the work of the devil." - force = 19 - throwforce = 24 - force_unwielded = 19 - force_wielded = 25 - -/obj/item/twohanded/pitchfork/demonic/Initialize() - . = ..() - set_light(3,6,LIGHT_COLOR_RED) - -/obj/item/twohanded/pitchfork/demonic/greater - force = 24 - throwforce = 50 - force_unwielded = 24 - force_wielded = 34 - -/obj/item/twohanded/pitchfork/demonic/ascended - force = 100 - throwforce = 100 - force_unwielded = 100 - force_wielded = 500000 // Kills you DEAD. - -/obj/item/twohanded/pitchfork/update_icon_state() - icon_state = "pitchfork[wielded]" - -/obj/item/twohanded/pitchfork/suicide_act(mob/user) - user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - return (BRUTELOSS) - -/obj/item/twohanded/pitchfork/demonic/pickup(mob/living/user) - . = ..() - if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user)) - var/mob/living/U = user - U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ - "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"") - if(ishuman(U)) - var/mob/living/carbon/human/H = U - H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - U.adjustFireLoss(rand(force/2,force)) - -/obj/item/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul() && !is_devil(user)) - to_chat(user, "[src] burns in your hands.") - user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - ..() - -/obj/item/twohanded/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity || !wielded) - return - if(iswallturf(target)) - var/turf/closed/wall/W = target - user.visible_message("[user] blasts \the [target] with \the [src]!") - playsound(target, 'sound/magic/disintegrate.ogg', 100, TRUE) - W.break_wall() - W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - return - -//HF blade - -/obj/item/twohanded/vibro_weapon - icon_state = "hfrequency0" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "vibro sword" - desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." - force_unwielded = 20 - force_wielded = 40 - armour_penetration = 100 - block_chance = 40 - throwforce = 20 - throw_speed = 4 - sharpness = IS_SHARP - attack_verb = list("cut", "sliced", "diced") - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - hitsound = 'sound/weapons/bladeslice.ogg' - -/obj/item/twohanded/vibro_weapon/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 20, 105) - -/obj/item/twohanded/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(wielded || attack_type != PROJECTILE_ATTACK) - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) - return 1 - else - owner.visible_message("[owner] parries [attack_text] with [src]!") - return 1 - return 0 - -/obj/item/twohanded/vibro_weapon/update_icon_state() - icon_state = "hfrequency[wielded]" - -/* - * Bone Axe - */ -/obj/item/twohanded/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone. - icon_state = "bone_axe0" - name = "bone axe" - desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." - force_wielded = 23 - -/obj/item/twohanded/fireaxe/boneaxe/update_icon_state() - icon_state = "bone_axe[wielded]" - -/* - * Bone Spear - */ -/obj/item/twohanded/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. - icon_state = "bone_spear0" - name = "bone spear" - desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." - force = 12 - force_unwielded = 12 - force_wielded = 20 - throwforce = 22 - armour_penetration = 15 //Enhanced armor piercing - -/obj/item/twohanded/spear/bonespear/update_icon_state() - icon_state = "bone_spear[wielded]" - -/obj/item/twohanded/binoculars - name = "binoculars" - desc = "Used for long-distance surveillance." - item_state = "binoculars" - icon_state = "binoculars" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - var/mob/listeningTo - var/zoom_out_amt = 6 - var/zoom_amt = 10 - -/obj/item/twohanded/binoculars/Destroy() - listeningTo = null - return ..() - -/obj/item/twohanded/binoculars/wield(mob/user) - . = ..() - if(!wielded) - return - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield) - listeningTo = user - user.visible_message("[user] holds [src] up to [user.p_their()] eyes.", "You hold [src] up to your eyes.") - item_state = "binoculars_wielded" - user.regenerate_icons() - if(!user?.client) - return - var/client/C = user.client - var/_x = 0 - var/_y = 0 - switch(user.dir) - if(NORTH) - _y = zoom_amt - if(EAST) - _x = zoom_amt - if(SOUTH) - _y = -zoom_amt - if(WEST) - _x = -zoom_amt - C.change_view(world.view + zoom_out_amt) - C.pixel_x = world.icon_size*_x - C.pixel_y = world.icon_size*_y - -/obj/item/twohanded/binoculars/unwield(mob/user) - . = ..() - if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - listeningTo = null - user.visible_message("[user] lowers [src].", "You lower [src].") - item_state = "binoculars" - user.regenerate_icons() - if(user && user.client) - user.regenerate_icons() - var/client/C = user.client - C.change_view(CONFIG_GET(string/default_view)) - user.client.pixel_x = 0 - user.client.pixel_y = 0 - -/obj/item/twohanded/broom - name = "broom" - desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage." - icon = 'icons/obj/janitor.dmi' - icon_state = "broom0" - lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' - force = 8 - throwforce = 10 - throw_speed = 3 - throw_range = 7 - w_class = WEIGHT_CLASS_NORMAL - force_unwielded = 8 - force_wielded = 12 - attack_verb = list("swept", "brushed off", "bludgeoned", "whacked") - resistance_flags = FLAMMABLE - -/obj/item/twohanded/broom/update_icon_state() - icon_state = "broom[wielded]" - -/obj/item/twohanded/broom/wield(mob/user) - . = ..() - if(!wielded) - return - to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.") - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep) - -/obj/item/twohanded/broom/unwield(mob/user) - . = ..() - UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - -/obj/item/twohanded/broom/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!proximity) - return - sweep(user, A, FALSE) - -/obj/item/twohanded/broom/proc/sweep(mob/user, atom/A, moving = TRUE) - var/turf/target - if (!moving) - if (isturf(A)) - target = A - else - target = A.loc - else - target = user.loc - if (locate(/obj/structure/table) in target.contents) - return - var/i = 0 - for(var/obj/item/garbage in target.contents) - if(!garbage.anchored) - garbage.Move(get_step(target, user.dir), user.dir) - i++ - if(i >= 20) - break - if(i >= 1) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1) - -/obj/item/twohanded/broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta - J.put_in_cart(src, user) - J.mybroom=src - J.update_icon() diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 529526dbd7f..af4bec92789 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -81,7 +81,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." flags_1 = CONDUCT_1 - item_flags = DROPDEL //If this ever happens, it's because you lost an arm + item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS slot_flags = null block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY light_range = 3 @@ -244,7 +244,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/wirerod/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/shard)) - var/obj/item/twohanded/spear/S = new /obj/item/twohanded/spear + var/obj/item/spear/S = new /obj/item/spear remove_item_from_storage(user) if (!user.transferItemToLoc(I, S)) @@ -466,7 +466,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/mounted_chainsaw/Destroy() var/obj/item/bodypart/part - new /obj/item/twohanded/required/chainsaw(get_turf(src)) + new /obj/item/chainsaw(get_turf(src)) if(iscarbon(loc)) var/mob/living/carbon/holder = loc var/index = holder.get_held_index_of_item(src) @@ -738,3 +738,57 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 item_state = "gohei" lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + +//HF blade +/obj/item/vibro_weapon + icon_state = "hfrequency0" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + name = "vibro sword" + desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." + armour_penetration = 100 + block_chance = 40 + force = 20 + throwforce = 20 + throw_speed = 4 + sharpness = IS_SHARP + attack_verb = list("cut", "sliced", "diced") + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + hitsound = 'sound/weapons/bladeslice.ogg' + var/wielded = FALSE // track wielded status on item + +/obj/item/vibro_weapon/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/vibro_weapon/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 20, 105) + AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="hfrequency1") + +/// triggered on wield of two handed item +/obj/item/vibro_weapon/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/vibro_weapon/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/vibro_weapon/update_icon_state() + icon_state = "hfrequency0" + +/obj/item/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + final_block_chance *= 2 + if(wielded || attack_type != PROJECTILE_ATTACK) + if(prob(final_block_chance)) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("[owner] deflects [attack_text] with [src]!") + playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) + return 1 + else + owner.visible_message("[owner] parries [attack_text] with [src]!") + return 1 + return 0 diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index e5a093a35d8..a6e2a869de9 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -90,10 +90,6 @@ return TRUE /obj/blob_act(obj/structure/blob/B) - if(isturf(loc)) - var/turf/T = loc - if(T.intact && level == 1) //the blob doesn't destroy thing below the floor - return take_damage(400, BRUTE, "melee", 0, get_dir(src, B)) /obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime @@ -201,10 +197,6 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e ///Called when the obj is exposed to fire. /obj/fire_act(exposed_temperature, exposed_volume) - if(isturf(loc)) - var/turf/T = loc - if(T.intact && level == 1) //fire can't damage things hidden below the floor. - return if(exposed_temperature && !(resistance_flags & FIRE_PROOF)) take_damage(clamp(0.02 * exposed_temperature, 0, 20), BURN, "fire", 0) if(!(resistance_flags & ON_FIRE) && (resistance_flags & FLAMMABLE) && !(resistance_flags & FIRE_PROOF)) @@ -224,6 +216,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(resistance_flags & ON_FIRE) resistance_flags &= ~ON_FIRE cut_overlay(GLOB.fire_overlay, TRUE) + update_icon() SSfire_burning.processing -= src ///Called when the obj is hit by a tesla bolt. diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 1d265123bb2..06921570865 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -33,6 +33,8 @@ var/drag_slowdown // Amont of multiplicative slowdown applied if pulled. >1 makes you slower, <1 makes you faster. + vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of obj in openspace. + /obj/vv_edit_var(vname, vval) switch(vname) if("anchored") @@ -72,7 +74,6 @@ var/turf/T = loc T.add_blueprints_preround(src) - /obj/Destroy(force=FALSE) if(!ismachinery(src)) STOP_PROCESSING(SSobj, src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists @@ -197,9 +198,6 @@ if(istype(M) && M.client && M.machine == src) src.attack_self(M) -/obj/proc/hide(h) - return - /obj/singularity_pull(S, current_size) ..() if(!anchored || current_size >= STAGE_FIVE) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index c00bdd4f059..dba1d540e43 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -35,7 +35,7 @@ user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) structureclimber.Paralyze(40) - structureclimber.visible_message("[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].") + structureclimber.visible_message("[structureclimber] is knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].") /obj/structure/ui_act(action, params) . = ..() @@ -65,6 +65,11 @@ /obj/structure/proc/do_climb(atom/movable/A) if(climbable) + if(A.loc == src.loc) + var/where_to_climb = get_step(A,dir) + if(!(is_blocked_turf(where_to_climb))) + A.forceMove(where_to_climb) + return TRUE density = FALSE . = step(A,get_dir(A,src.loc)) density = TRUE diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index ca029b8a06a..a0c96718c09 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -50,6 +50,7 @@ var/used = FALSE var/painting_name //Painting name, this is set after framing. var/finalized = FALSE //Blocks edits + var/author_ckey var/icon_generated = FALSE var/icon/generated_icon @@ -123,6 +124,7 @@ /obj/item/canvas/proc/finalize(mob/user) finalized = TRUE + author_ckey = user.ckey generate_proper_overlay() try_rename(user) @@ -237,6 +239,7 @@ /obj/structure/sign/painting/Initialize(mapload, dir, building) . = ..() + SSpersistence.painting_frames += src AddComponent(/datum/component/art, 20) if(dir) setDir(dir) @@ -244,6 +247,10 @@ pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 +/obj/structure/sign/painting/Destroy() + . = ..() + SSpersistence.painting_frames -= src + /obj/structure/sign/painting/attackby(obj/item/I, mob/user, params) if(!C && istype(I, /obj/item/canvas)) frame_canvas(user,I) @@ -309,6 +316,7 @@ return var/list/chosen = pick(SSpersistence.paintings[persistence_id]) var/title = chosen["title"] + var/author = chosen["ckey"] var/png = "data/paintings/[persistence_id]/[chosen["md5"]].png" if(!fexists(png)) stack_trace("Persistent painting [chosen["md5"]].png was not found in [persistence_id] directory.") @@ -327,6 +335,7 @@ new_canvas.icon_generated = TRUE new_canvas.finalized = TRUE new_canvas.painting_name = title + new_canvas.author_ckey = author C = new_canvas update_icon() @@ -349,15 +358,14 @@ var/result = rustg_dmi_create_png(png_path,"[C.width]","[C.height]",data) if(result) CRASH("Error saving persistent painting: [result]") - current += list(list("title" = C.painting_name , "md5" = md5)) + current += list(list("title" = C.painting_name , "md5" = md5, "ckey" = C.author_ckey)) SSpersistence.paintings[persistence_id] = current /obj/item/canvas/proc/fill_grid_from_icon(icon/I) - var/w = I.Width() + 1 var/h = I.Height() + 1 for(var/x in 1 to width) for(var/y in 1 to height) - grid[x][y] = I.GetPixel(w-x,h-y) + grid[x][y] = I.GetPixel(x,h-y) //Presets for art gallery mapping, for paintings to be shared across stations /obj/structure/sign/painting/library @@ -368,3 +376,31 @@ /obj/structure/sign/painting/library_private // keep your smut away from prying eyes, or non-librarians at least persistence_id = "library_private" + +/obj/structure/sign/painting/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION(VV_HK_REMOVE_PAINTING, "Remove Persistent Painting") + +/obj/structure/sign/painting/vv_do_topic(list/href_list) + . = ..() + if(href_list[VV_HK_REMOVE_PAINTING]) + if(!check_rights(NONE)) + return + var/mob/user = usr + if(!persistence_id || !C) + to_chat(user,"This is not a persistent painting.") + return + var/md5 = md5(C.get_data_string()) + var/author = C.author_ckey + var/list/current = SSpersistence.paintings[persistence_id] + if(current) + for(var/list/entry in current) + if(entry["md5"] == md5) + current -= entry + var/png = "data/paintings/[persistence_id]/[md5].png" + fdel(png) + for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames) + if(P.C && md5(P.C.get_data_string()) == md5) + QDEL_NULL(P.C) + log_admin("[key_name(user)] has deleted a persistent painting made by [author].") + message_admins("[key_name_admin(user)] has deleted persistent painting made by [author].") diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index 87cac2cafd7..9befac9047c 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -69,8 +69,8 @@ add_overlay(nest_overlay) /obj/structure/bed/nest/post_unbuckle_mob(mob/living/M) - M.pixel_x = M.get_standard_pixel_x_offset(M.lying) - M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + M.pixel_x = M.get_standard_pixel_x_offset(!(M.mobility_flags & MOBILITY_STAND)) + M.pixel_y = M.get_standard_pixel_y_offset(!(M.mobility_flags & MOBILITY_STAND)) M.layer = initial(M.layer) cut_overlay(nest_overlay) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index c0a6c8f8244..daf5db0f2bc 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -100,8 +100,8 @@ /obj/structure/bed/roller/post_unbuckle_mob(mob/living/M) density = FALSE icon_state = "down" - M.pixel_x = M.get_standard_pixel_x_offset(M.lying) - M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + M.pixel_x = M.get_standard_pixel_x_offset(!(M.mobility_flags & MOBILITY_STAND)) + M.pixel_y = M.get_standard_pixel_y_offset(!(M.mobility_flags & MOBILITY_STAND)) /obj/item/roller name = "roller bed" diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index b41cecd537d..2d14c78d526 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -4,7 +4,7 @@ icon = 'waspstation/icons/obj/chairs.dmi' //WaspStation Edit - Better Icons icon_state = "chair" anchored = TRUE - can_buckle = 1 + can_buckle = TRUE buckle_lying = 0 //you sit in a chair, not lay resistance_flags = NONE max_integrity = 250 @@ -18,8 +18,8 @@ /obj/structure/chair/examine(mob/user) . = ..() . += "It's held together by a couple of bolts." - if(!has_buckled_mobs()) - . += "Drag your sprite to sit in it." + if(!has_buckled_mobs() && can_buckle) + . += "While standing on [src], drag and drop your sprite onto [src] to buckle to it." /obj/structure/chair/Initialize() . = ..() @@ -227,7 +227,7 @@ name = "stool" desc = "Apply butt." icon_state = "stool" - can_buckle = 0 + can_buckle = FALSE buildstackamount = 1 item_chair = /obj/item/chair/stool diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index e67d3d8b76a..1b5fc1961ca 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -72,6 +72,8 @@ /obj/structure/closet/proc/closet_update_overlays(list/new_overlays) . = new_overlays + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + luminosity = 0 if(!opened) if(icon_door) . += "[icon_door]_door" @@ -80,6 +82,9 @@ if(welded) . += icon_welded if(secure && !broken) + //Overlay is similar enough for both that we can use the same mask for both + luminosity = 1 + SSvis_overlays.add_vis_overlay(src, icon, "locked", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) if(locked) . += "locked" else diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 417e7505bc3..2320c39acd2 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -39,8 +39,8 @@ ..() new /obj/item/clothing/glasses/eyepatch(src) new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/tackler/combat(src) + new /obj/item/clothing/gloves/tackler/combat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/mask/gas/sechailer/swat(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 9457fb60140..57f9845f5f5 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -104,7 +104,7 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/suit/chaplainsuit/nun(src) new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/hooded/chaplainsuit/monkfrock(src) + new /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit(src) new /obj/item/clothing/suit/chaplainsuit/holidaypriest(src) new /obj/item/storage/backpack/cultpack(src) new /obj/item/storage/fancy/candle_box(src) 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 f5129373b01..642f28ec59a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -50,6 +50,28 @@ new /obj/item/clothing/glasses/hud/health(src) return +/obj/structure/closet/secure_closet/psychology + name = "psychology locker" + req_access = list(ACCESS_PSYCHOLOGY) + icon_state = "cabinet" + open_sound = 'sound/machines/wooden_closet_open.ogg' + close_sound = 'sound/machines/wooden_closet_close.ogg' + open_sound_volume = 25 + close_sound_volume = 50 + +/obj/structure/closet/secure_closet/psychology/PopulateContents() + ..() + new /obj/item/clothing/under/suit/black(src) + new /obj/item/clothing/under/suit/black/skirt(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/storage/backpack/medic(src) + new /obj/item/radio/headset/headset_srvmed(src) + new /obj/item/clipboard(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/ears/earmuffs(src) + new /obj/item/clothing/mask/muzzle(src) + new /obj/item/clothing/glasses/blindfold(src) + /obj/structure/closet/secure_closet/CMO name = "\proper chief medical officer's locker" req_access = list(ACCESS_CMO) 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 336221eaffd..e4f1470f7eb 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -218,7 +218,7 @@ new /obj/item/clothing/suit/armor/vest/det_suit(src) new /obj/item/clothing/accessory/holster/detective(src) //WaspStation Edit - Made Holsters Accessories new /obj/item/pinpointer/crew(src) - new /obj/item/twohanded/binoculars(src) + new /obj/item/binoculars(src) new /obj/item/storage/box/rxglasses/spyglasskit(src) /obj/structure/closet/secure_closet/injection name = "lethal injections" diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 69fe409f951..ea62ffde613 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -87,11 +87,21 @@ name = "internals crate" icon_state = "o2crate" -/obj/structure/closet/crate/trashcart +/obj/structure/closet/crate/trashcart //please make this a generic cart path later after things calm down a little desc = "A heavy, metal trashcart with wheels." name = "trash cart" icon_state = "trashcart" +/obj/structure/closet/crate/trashcart/Moved() + . = ..() + if(has_gravity()) + playsound(src, 'sound/effects/roll.ogg', 100, TRUE) + +/obj/structure/closet/crate/trashcart/laundry + name = "laundry cart" + desc = "A large cart for hauling around large amounts of laundry." + icon_state = "laundry" + /obj/structure/closet/crate/medical desc = "A medical crate." name = "medical crate" diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm index 452f439ede2..952bb1a5d37 100644 --- a/code/game/objects/structures/crates_lockers/crates/critter.dm +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -26,6 +26,9 @@ return ..() +/obj/structure/closet/crate/critter/update_icon_state() + return + /obj/structure/closet/crate/critter/update_overlays() . = ..() if(opened) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 81e31dc49b1..b53a4292535 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -10,6 +10,7 @@ max_integrity = 200 integrity_failure = 0.25 var/obj/item/showpiece = null + var/obj/item/showpiece_type = null //This allows for showpieces that can only hold items if they're the same istype as this. var/alert = TRUE var/open = FALSE var/openable = TRUE @@ -17,6 +18,7 @@ var/start_showpiece_type = null //add type for items on display var/list/start_showpieces = list() //Takes sublists in the form of list("type" = /obj/item/bikehorn, "trophy_message" = "henk") var/trophy_message = "" + var/glass_fix = TRUE /obj/structure/displaycase/Initialize() . = ..() @@ -131,11 +133,14 @@ to_chat(user, "You [open ? "close":"open"] [src].") toggle_lock(user) else if(open && !showpiece) + if(showpiece_type && !istype(W, showpiece_type)) + to_chat(user, "This doesn't belong in this kind of display.") + return TRUE if(user.transferItemToLoc(W, src)) showpiece = W to_chat(user, "You put [W] on display.") update_icon() - else if(istype(W, /obj/item/stack/sheet/glass) && broken) + else if(glass_fix && broken && istype(W, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = W if(G.get_amount() < 2) to_chat(user, "You need two glass sheets to fix the case!") @@ -206,6 +211,21 @@ electronics = I to_chat(user, "You install the airlock electronics.") + else if(istype(I, /obj/item/stock_parts/card_reader)) + var/obj/item/stock_parts/card_reader/C = I + to_chat(user, "You start adding [C] to [src]...") + if(do_after(user, 20, target = src)) + var/obj/structure/displaycase/forsale/sale = new(src.loc) + if(electronics) + electronics.forceMove(sale) + sale.electronics = electronics + if(electronics.one_access) + sale.req_one_access = electronics.accesses + else + sale.req_access = electronics.accesses + qdel(src) + qdel(C) + else if(istype(I, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = I if(G.get_amount() < 10) @@ -342,3 +362,144 @@ name = initial(I.name) icon = initial(I.icon) icon_state = initial(I.icon_state) + +/obj/structure/displaycase/forsale + name = "vend-a-tray" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "laserbox0" + desc = "A display case with an ID-card swiper. Use your ID to purchase the contents." + density = FALSE + max_integrity = 100 + req_access = list(ACCESS_KITCHEN) + showpiece_type = /obj/item/reagent_containers/food + alert = FALSE //No, we're not calling the fire department because someone stole your cookie. + glass_fix = FALSE //Fixable with tools instead. + ///The price of the item being sold. Altered by grab intent ID use. + var/sale_price = 20 + ///The Account which will recieve payment for purchases. Set by the first ID to swipe the tray. + var/datum/bank_account/payments_acc = null + +/obj/structure/displaycase/forsale/update_icon() //remind me to fix my shitcode later + var/icon/I + if(open) + I = icon('icons/obj/stationobjs.dmi',"laserboxb0") + else + I = icon('icons/obj/stationobjs.dmi',"laserbox0") + if(!showpiece && !open) + I = icon('icons/obj/stationobjs.dmi',"laserbox_open") + if(broken) + I = icon('icons/obj/stationobjs.dmi',"laserbox_broken") + if(showpiece) + var/icon/S = getFlatIcon(showpiece) + S.Scale(17,17) + I.Blend(S,ICON_UNDERLAY,8,12) + src.icon = I + return + +/obj/structure/displaycase/forsale/attackby(obj/item/I, mob/living/user, params) + if(isidcard(I)) + //Card Registration + var/obj/item/card/id/potential_acc = I + if(!potential_acc.registered_account) + to_chat(user, "This ID card has no account registered!") + return + if(!payments_acc && potential_acc.registered_account) + payments_acc = potential_acc.registered_account + playsound(src, 'sound/machines/click.ogg', 20, TRUE) + to_chat(user, "Vend-a-tray registered. Use your ID on grab intent to change the sale price, or disarm intent to open the tray.") + return + //Buying the contained item with the ID. + switch(user.a_intent) + if(INTENT_HELP) + if(!showpiece) + to_chat(user, "There's nothing for sale.") + return TRUE + if(broken) + to_chat(user, "[src] appears to be broken.") + return TRUE + var/confirm = alert(user, "Purchase [showpiece] for [sale_price]?", "Purchase?", "Confirm", "Cancel") + if(confirm == "Cancel" || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return TRUE + var/datum/bank_account/account = potential_acc.registered_account + if(!account.has_money(sale_price)) + to_chat(user, "You do not possess the funds to purchase this.") + return TRUE + else + account.adjust_money(-sale_price) + if(payments_acc) + payments_acc.adjust_money(sale_price) + user.put_in_hands(showpiece) + to_chat(user, "You purchase [showpiece] for [sale_price] credits.") + playsound(src, 'sound/effects/cashregister.ogg', 40, TRUE) + icon = 'icons/obj/stationobjs.dmi' + flick("laserbox_vend", src) + showpiece = null + update_icon() + return TRUE + //Setting the object's price. + if(INTENT_GRAB) + var/new_price_input = input(user,"Set the sale price for this vend-a-tray.","new price",0) as num|null + if(isnull(new_price_input) || (payments_acc != potential_acc.registered_account)) + to_chat(user, "The vend-a-tray rejects your new price.") + return + if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) ) + to_chat(user, "You need to get closer!") + return + new_price_input = clamp(round(new_price_input, 1), 10, 1000) + sale_price = new_price_input + to_chat(user, "The cost is now set to [sale_price].") + return TRUE + if(INTENT_DISARM || INTENT_HARM) + if(payments_acc && payments_acc != potential_acc.registered_account) + to_chat(user, "This Vend-a-tray is already registered!") + return + if(I.tool_behaviour == TOOL_WRENCH && open && user.a_intent == INTENT_HELP ) + if(anchored) + to_chat(user, "You start unsecuring [src]...") + else + to_chat(user, "You start securing [src]...") + if(I.use_tool(src, user, 16, volume=50)) + if(QDELETED(I)) + return + if(anchored) + to_chat(user, "You unsecure [src].") + else + to_chat(user, "You secure [src].") + anchored = !anchored + return + else if(I.tool_behaviour == TOOL_WRENCH && !open && user.a_intent == INTENT_HELP) + to_chat(user, "[src] must be open to move it.") + return + if(istype(I, /obj/item/pda)) + return TRUE + . = ..() + +/obj/structure/displaycase/forsale/multitool_act(mob/living/user, obj/item/I) + . = ..() + if(obj_integrity <= (integrity_failure * max_integrity)) + to_chat(user, "You start recalibrating [src]'s hover field...") + if(do_after(user, 20, target = src)) + broken = 0 + obj_integrity = max_integrity + update_icon() + return TRUE + +/obj/structure/displaycase/forsale/emag_act(mob/user) + . = ..() + payments_acc = null + req_access = list() + to_chat(user, "[src]'s card reader fizzles and smokes, and the account owner is reset.") + +/obj/structure/displaycase/forsale/examine(mob/user) + . = ..() + if(showpiece && !open) + . += "[showpiece] is for sale for [sale_price] credits." + if(broken) + . += "[src] is sparking and the hover field generator seems to be overloaded. Use a multitool to fix it." + +/obj/structure/displaycase/forsale/obj_break(damage_flag) + if(!broken && !(flags_1 & NODECONSTRUCT_1)) + broken = TRUE + playsound(src, "shatter", 70, TRUE) + update_icon() + trigger_alarm() //In case it's given an alarm anyway. diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 28ea63e7bdf..0c339b4904e 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -44,3 +44,9 @@ to_chat(buckled_mob, "You feel a deep shock course through your body!") addtimer(CALLBACK(buckled_mob, /mob/living.proc/electrocute_act, 85, src, 1), 1) visible_message("The electric chair went off!", "You hear a deep sharp shock!") + +/obj/structure/chair/e_chair/post_buckle_mob(mob/living/L) + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "dying", /datum/mood_event/deaths_door) + +/obj/structure/chair/e_chair/post_unbuckle_mob(mob/living/L) + SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "dying") diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 1f00462f45c..2410e478d55 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -10,7 +10,7 @@ integrity_failure = 0.33 var/locked = TRUE var/open = FALSE - var/obj/item/twohanded/fireaxe/fireaxe + var/obj/item/fireaxe/fireaxe /obj/structure/fireaxecabinet/Initialize() . = ..() @@ -49,9 +49,9 @@ obj_integrity = max_integrity update_icon() else if(open || broken) - if(istype(I, /obj/item/twohanded/fireaxe) && !fireaxe) - var/obj/item/twohanded/fireaxe/F = I - if(F.wielded) + if(istype(I, /obj/item/fireaxe) && !fireaxe) + var/obj/item/fireaxe/F = I + if(F && F.wielded) to_chat(user, "Unwield the [F.name] first.") return if(!user.transferItemToLoc(F, src)) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 5f18b4478b9..bd7196185e7 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -300,7 +300,7 @@ icon_state = "fullgrass_[rand(1, 3)]" . = ..() -/obj/item/twohanded/required/kirbyplants +/obj/item/kirbyplants name = "potted plant" icon = 'icons/obj/flora/plants.dmi' icon_state = "plant-01" @@ -308,29 +308,29 @@ layer = ABOVE_MOB_LAYER w_class = WEIGHT_CLASS_HUGE force = 10 - force_wielded = 10 throwforce = 13 throw_speed = 2 throw_range = 4 -/obj/item/twohanded/required/kirbyplants/Initialize() +/obj/item/kirbyplants/ComponentInitialize() . = ..() AddComponent(/datum/component/tactical) addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, 500)), 0) + AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_unwielded=10, force_wielded=10) -/obj/item/twohanded/required/kirbyplants/random +/obj/item/kirbyplants/random icon = 'icons/obj/flora/_flora.dmi' icon_state = "random_plant" var/list/static/states -/obj/item/twohanded/required/kirbyplants/random/Initialize() +/obj/item/kirbyplants/random/Initialize() . = ..() icon = 'icons/obj/flora/plants.dmi' if(!states) generate_states() icon_state = pick(states) -/obj/item/twohanded/required/kirbyplants/random/proc/generate_states() +/obj/item/kirbyplants/random/proc/generate_states() states = list() for(var/i in 1 to 25) var/number @@ -342,25 +342,25 @@ states += "applebush" -/obj/item/twohanded/required/kirbyplants/dead +/obj/item/kirbyplants/dead name = "RD's potted plant" desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..." icon_state = "plant-25" -/obj/item/twohanded/required/kirbyplants/photosynthetic +/obj/item/kirbyplants/photosynthetic name = "photosynthetic potted plant" desc = "A bioluminescent plant." icon_state = "plant-09" light_color = "#2cb2e8" light_range = 3 -/obj/item/twohanded/required/kirbyplants/fullysynthetic +/obj/item/kirbyplants/fullysynthetic name = "plastic potted plant" desc = "A fake, cheap looking, plastic tree. Perfect for people who kill every plant they touch." icon_state = "plant-26" custom_materials = (list(/datum/material/plastic = 8000)) -/obj/item/twohanded/required/kirbyplants/fullysynthetic/Initialize() +/obj/item/kirbyplants/fullysynthetic/Initialize() . = ..() icon_state = "plant-[rand(26, 29)]" diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 21c3edab42c..acbcac4579c 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -33,6 +33,45 @@ //Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers. +/obj/structure/ash_walker_eggshell + name = "ash walker egg" + desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within. The egg shell looks resistant to temperature but otherwise rather brittle." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "large_egg" + resistance_flags = LAVA_PROOF | FIRE_PROOF | FREEZE_PROOF + max_integrity = 80 + var/obj/effect/mob_spawn/human/ash_walker/egg + +/obj/structure/ash_walker_eggshell/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) //lifted from xeno eggs + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE) + else + playsound(src, 'sound/weapons/tap.ogg', 50, TRUE) + if(BURN) + if(damage_amount) + playsound(loc, 'sound/items/welder.ogg', 100, TRUE) + +/obj/structure/ash_walker_eggshell/attack_ghost(mob/user) //Pass on ghost clicks to the mob spawner + if(egg) + egg.attack_ghost(user) + . = ..() + +/obj/structure/ash_walker_eggshell/Destroy() + if(!egg) + return ..() + var/mob/living/carbon/human/yolk = new /mob/living/carbon/human/(get_turf(src)) + yolk.fully_replace_character_name(null,random_unique_lizard_name(gender)) + yolk.set_species(/datum/species/lizard/ashwalker) + yolk.underwear = "Nude" + yolk.equipOutfit(/datum/outfit/ashwalker)//this is an authentic mess we're making + yolk.update_body() + yolk.gib() + qdel(egg) + return ..() + + /obj/effect/mob_spawn/human/ash_walker name = "ash walker egg" desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within." @@ -43,7 +82,6 @@ outfit = /datum/outfit/ashwalker roundstart = FALSE death = FALSE - anchored = FALSE move_resist = MOVE_FORCE_NORMAL density = FALSE short_desc = "You are an ash walker. Your tribe worships the Necropolis." @@ -52,10 +90,17 @@ Fresh sacrifices for your nest." assignedrole = "Ash Walker" var/datum/team/ashwalkers/team + var/obj/structure/ash_walker_eggshell/eggshell + +/obj/effect/mob_spawn/human/ash_walker/allow_spawn(mob/user) + if(!(user.key in team.players_spawned))//one per person unless you get a bonus spawn + return TRUE + to_chat(user, "You have exhausted your usefulness to the Necropolis.") + return FALSE /obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn) new_spawn.fully_replace_character_name(null,random_unique_lizard_name(gender)) - to_chat(new_spawn, "Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Don't leave your nest undefended, protect it with your life. Glory to the Necropolis!") + to_chat(new_spawn, "Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Invade the strange structure of the outsiders if you must. Do not cause unnecessary destruction, as littering the wastes with ugly wreckage is certain to not gain you favor. Glory to the Necropolis!") new_spawn.mind.add_antag_datum(/datum/antagonist/ashwalker, team) @@ -63,11 +108,18 @@ var/mob/living/carbon/human/H = new_spawn H.underwear = "Nude" H.update_body() + ADD_TRAIT(H, TRAIT_PRIMITIVE, ROUNDSTART_TRAIT) + team.players_spawned += (new_spawn.key) + eggshell.egg = null + qdel(eggshell) /obj/effect/mob_spawn/human/ash_walker/Initialize(mapload, datum/team/ashwalkers/ashteam) . = ..() var/area/A = get_area(src) team = ashteam + eggshell = new /obj/structure/ash_walker_eggshell(get_turf(loc)) + eggshell.egg = src + src.forceMove(eggshell) if(A) notify_ghosts("An ash walker egg is ready to hatch in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER) @@ -413,7 +465,7 @@ name = "Syndicate Operative Empty" uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/syndicate/alt back = /obj/item/storage/backpack implants = list(/obj/item/implant/weapons_auth) @@ -588,3 +640,79 @@ /obj/effect/mob_spawn/human/pirate/gunner rank = "Gunner" + +//Forgotten syndicate ship + +/obj/effect/mob_spawn/human/syndicatespace + name = "Syndicate Ship Crew Member" + roundstart = FALSE + death = FALSE + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + short_desc = "You are a syndicate operative on old ship, stuck in hostile space." + flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Fix the ship, find a way to power it and follow your captain's orders." + important_info = "Obey orders given by your captain. DO NOT let the ship fall into enemy hands." + outfit = /datum/outfit/syndicatespace/syndicrew + +/datum/outfit/syndicatespace/syndicrew/post_equip(mob/living/carbon/human/H) + H.faction |= ROLE_SYNDICATE + +/obj/effect/mob_spawn/human/syndicatespace/special(mob/living/new_spawn) + new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) + +/obj/effect/mob_spawn/human/syndicatespace/Destroy() + new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) + return ..() + + +/obj/effect/mob_spawn/human/syndicatespace/captain + name = "Syndicate Ship Captain" + roundstart = FALSE + death = FALSE + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + short_desc = "You are the captain of an old ship, stuck in hostile space." + flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Command your crew and turn your ship into the most protected fortress." + important_info = "Protect the ship and secret documents in your backpack with your own life. DO NOT let the ship fall into enemy hands." + mob_gender = "male" + outfit = /datum/outfit/syndicatespace/syndicaptain + +/datum/outfit/syndicatespace/syndicaptain/post_equip(mob/living/carbon/human/H) + H.faction |= ROLE_SYNDICATE + +/obj/effect/mob_spawn/human/syndicatespace/captain/Destroy() + new/obj/structure/fluff/empty_sleeper/syndicate/captain(get_turf(src)) + return ..() + +/datum/outfit/syndicatespace/syndicrew + name = "Syndicate Ship Crew Member" + uniform = /obj/item/clothing/under/syndicate/combat + glasses = /obj/item/clothing/glasses/night + mask = /obj/item/clothing/mask/gas/syndicate + ears = /obj/item/radio/headset/syndicate/alt + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + back = /obj/item/storage/backpack + l_pocket = /obj/item/gun/ballistic/automatic/pistol + r_pocket = /obj/item/kitchen/knife/combat/survival + belt = /obj/item/storage/belt/military/assault + id = /obj/item/card/id/syndicate_command/crew_id + implants = list(/obj/item/implant/weapons_auth) + +/datum/outfit/syndicatespace/syndicaptain + name = "Syndicate Ship Captain" + uniform = /obj/item/clothing/under/syndicate/combat + suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate + glasses = /obj/item/clothing/glasses/night + mask = /obj/item/clothing/mask/gas/syndicate + head = /obj/item/clothing/head/HoS/beret/syndicate + ears = /obj/item/radio/headset/syndicate/alt + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + back = /obj/item/storage/backpack + l_pocket = /obj/item/gun/ballistic/automatic/pistol/APS + r_pocket = /obj/item/kitchen/knife/combat/survival + belt = /obj/item/storage/belt/military/assault + id = /obj/item/card/id/syndicate_command/captain_id + backpack_contents = list(/obj/item/documents/syndicate/red, /obj/item/paper/fluff/ruins/forgottenship/password) + implants = list(/obj/item/implant/weapons_auth) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 678d6184f2a..096780902b2 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -163,7 +163,7 @@ qdel(src) return - if(S.sheettype && S.sheettype != "runed") + if(S.sheettype != "runed") var/M = S.sheettype if(state == GIRDER_DISPLACED) if(S.get_amount() < 2) @@ -189,7 +189,16 @@ S.use(2) to_chat(user, "You add the plating.") var/turf/T = get_turf(src) - T.PlaceOnTop(text2path("/turf/closed/wall/mineral/[M]")) + if(S.walltype) + T.PlaceOnTop(S.walltype) + else + var/turf/newturf = T.PlaceOnTop(/turf/closed/wall/material) + var/list/material_list = list() + if(S.material_type) + material_list[SSmaterials.GetMaterialRef(S.material_type)] = MINERAL_MATERIAL_AMOUNT * 2 + if(material_list) + newturf.set_custom_materials(material_list) + transfer_fingerprints_to(T) qdel(src) return diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 2ac5a2d4856..9f7ccff65ee 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -208,6 +208,7 @@ if (!istype(M, /mob/living/carbon/human)) return + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "dying", /datum/mood_event/deaths_door) var/mob/living/carbon/human/H = M if (H.dna) @@ -232,6 +233,7 @@ M.regenerate_icons() M.pixel_y -= -GUILLOTINE_HEAD_OFFSET // Move their body back M.layer -= GUILLOTINE_LAYER_DIFF + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "dying") ..() /obj/structure/guillotine/can_be_unfasten_wrench(mob/user, silent) diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index 3495af5d12b..ffdaf86bde5 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -6,7 +6,7 @@ density = FALSE anchored = TRUE var/bonespear = FALSE - var/obj/item/twohanded/spear/spear + var/obj/item/spear/spear var/obj/item/bodypart/head/victim /obj/structure/headpike/bone //for bone spears @@ -19,9 +19,9 @@ name = "[victim.name] on a spear" update_icon() if(bonespear) - spear = locate(/obj/item/twohanded/spear/bonespear) in parts_list + spear = locate(/obj/item/spear/bonespear) in parts_list else - spear = locate(/obj/item/twohanded/spear) in parts_list + spear = locate(/obj/item/spear) in parts_list /obj/structure/headpike/Initialize() . = ..() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index bf527d70be6..adeeec5affe 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -9,7 +9,7 @@ var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite var/obj/item/storage/bag/trash/mybag var/obj/item/mop/mymop - var/obj/item/twohanded/broom/mybroom + var/obj/item/pushbroom/mybroom var/obj/item/reagent_containers/spray/cleaner/myspray var/obj/item/lightreplacer/myreplacer var/signs = 0 @@ -51,9 +51,9 @@ m.janicart_insert(user, src) else to_chat(user, fail_msg) - else if(istype(I, /obj/item/twohanded/broom)) + else if(istype(I, /obj/item/pushbroom)) if(!mybroom) - var/obj/item/twohanded/broom/b=I + var/obj/item/pushbroom/b=I b.janicart_insert(user,src) else to_chat(user, fail_msg) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 9e572c4c57d..63fae9f4548 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -88,8 +88,13 @@ if (!is_ghost && !in_range(src, user)) return + var/list/tool_list = list( + "Up" = image(icon = 'icons/testing/turf_analysis.dmi', icon_state = "red_arrow", dir = NORTH), + "Down" = image(icon = 'icons/testing/turf_analysis.dmi', icon_state = "red_arrow", dir = SOUTH) + ) + if (up && down) - var/result = alert("Go up or down [src]?", "Ladder", "Up", "Down", "Cancel") + var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) if (!is_ghost && !in_range(src, user)) return // nice try switch(result) @@ -109,6 +114,11 @@ if(!is_ghost) add_fingerprint(user) +/obj/structure/ladder/proc/check_menu(mob/user) + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + /obj/structure/ladder/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 1bff30a0d79..a8dd685292e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -9,7 +9,8 @@ max_integrity = 50 layer = LATTICE_LAYER //under pipes plane = FLOOR_PLANE - var/number_of_rods = 1 + var/number_of_mats = 1 + var/build_material = /obj/item/stack/rods canSmoothWith = list(/obj/structure/lattice, /turf/open/floor, /turf/closed/wall, @@ -45,7 +46,7 @@ /obj/structure/lattice/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/rods(get_turf(src), number_of_rods) + new build_material(get_turf(src), number_of_mats) qdel(src) /obj/structure/lattice/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) @@ -71,7 +72,7 @@ desc = "A catwalk for easier EVA maneuvering and cable placement." icon = 'icons/obj/smooth_structures/catwalk.dmi' icon_state = "catwalk" - number_of_rods = 2 + number_of_mats = 2 smooth = SMOOTH_TRUE canSmoothWith = null obj_flags = CAN_BE_HIT | BLOCK_Z_FALL @@ -96,7 +97,7 @@ desc = "A specialized support beam for building across lava. Watch your step." icon = 'icons/obj/smooth_structures/catwalk.dmi' icon_state = "catwalk" - number_of_rods = 1 + number_of_mats = 1 color = "#5286b9ff" smooth = SMOOTH_TRUE canSmoothWith = null diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index 22c32986b01..b49730480f4 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -65,6 +65,16 @@ if(!O.plunger_act(src, user, reinforced)) return ..() +/obj/item/plunger/throw_impact(atom/hit_atom, datum/thrownthing/tt) + . = ..() + if(tt.target_zone != BODY_ZONE_HEAD) + return + if(iscarbon(hit_atom)) + var/mob/living/carbon/H = hit_atom + if(!H.wear_mask) + H.equip_to_slot_if_possible(src, ITEM_SLOT_MASK) + H.visible_message("The plunger slams into [H]'s face!", "The plunger suctions to your face!") + /obj/item/plunger/reinforced name = "reinforced plunger" desc = "It's an M. 7 Reinforced Plunger© for heavy duty plunging." diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 22f3d56c62e..cda38c08e7b 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -41,6 +41,8 @@ var/new_style = input(user, "Select a hairstyle", "Grooming") as null|anything in GLOB.hairstyles_list if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return //no tele-grooming + if(HAS_TRAIT(H, TRAIT_BALD)) + to_chat(H, "If only growing back hair were that easy for you...") if(new_style) H.hairstyle = new_style diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 422d7a06524..570f26cf71d 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -13,6 +13,7 @@ climbable = FALSE /obj/structure/railing/attackby(obj/item/I, mob/living/user, params) + ..() add_fingerprint(user) if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP) @@ -28,13 +29,16 @@ to_chat(user, "[src] is already in good condition!") return - if(!(flags_1&NODECONSTRUCT_1)) - if(I.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You begin to [anchored ? "unfasten the railing from":"fasten the railing to"] the floor...") - if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) - setAnchored(!anchored) - to_chat(user, "You [anchored ? "fasten the railing to":"unfasten the railing from"] the floor.") - return +///Implements behaviour that makes it possible to unanchor the railing. +/obj/structure/railing/wrench_act(mob/living/user, obj/item/I) + . = ..() + if(flags_1&NODECONSTRUCT_1) + return + to_chat(user, "You begin to [anchored ? "unfasten the railing from":"fasten the railing to"] the floor...") + if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) + setAnchored(!anchored) + to_chat(user, "You [anchored ? "fasten the railing to":"unfasten the railing from"] the floor.") + return TRUE /obj/structure/railing/proc/check_anchored(checked_anchored) if(anchored == checked_anchored) @@ -53,8 +57,8 @@ /obj/structure/railing/CheckExit(atom/movable/O, turf/target) ..() if(get_dir(loc, target) & dir) - return 0 - return 1 + return FALSE + return TRUE /obj/structure/railing/corner/CheckExit() - return 1 + return TRUE diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index b4204a18025..16c954d0465 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -105,7 +105,7 @@ "You hear welding.") if(W.use_tool(src, user, 40, volume=40)) obj_integrity = max_integrity - user.visible_message("[user] has repaired [src].", \ + user.visible_message("[user] repairs [src].", \ "You finish repairing [src].") else if(!anchored) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 4a2b6a65448..0496aa49ed3 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -13,7 +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 + 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 @@ -196,16 +196,10 @@ FLOOR SAFES name = "floor safe" icon_state = "floorsafe" density = FALSE - level = 1 //underfloor layer = LOW_OBJ_LAYER /obj/structure/safe/floor/Initialize(mapload) . = ..() - if(mapload) - var/turf/T = loc - hide(T.intact) - -/obj/structure/safe/floor/hide(var/intact) - invisibility = intact ? INVISIBILITY_MAXIMUM : 0 + AddElement(/datum/element/undertile) diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm index 4625eaca77a..907ad30fe3f 100644 --- a/code/game/objects/structures/signs/signs_departments.dm +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -90,3 +90,7 @@ name = "\improper NANITE LAB" desc = "A sign labelling an area where testing and development of nanites is performed." icon_state = "nanites" +/obj/structure/sign/departments/psychology + name = "\improper PSYCHOLOGY" + desc = "A sign labelling where the Psychologist works, they can probably help you get your head straight." + icon_state = "psychology" diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm index 84685165023..63de37f2e8c 100644 --- a/code/game/objects/structures/signs/signs_maps.dm +++ b/code/game/objects/structures/signs/signs_maps.dm @@ -45,3 +45,14 @@ name = "command department" desc = "A direction sign, pointing out which way the Command department is." icon_state = "direction_bridge" + +/obj/structure/sign/directions/vault + name = "vault directions" + desc = "A direction sign, pointing out which way the station's Vault is." + icon_state = "direction_vault" + +/obj/structure/sign/directions/upload + name = "upload directions" + desc = "A direction sign, pointing out which way the station's AI Upload is." + icon_state = "direction_upload" + diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 4207dfc413f..d46caf30fc7 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -175,6 +175,34 @@ return // If the tray IS empty, continue on (tray will be placed on the table like other items) + if(istype(I, /obj/item/riding_offhand)) + var/obj/item/riding_offhand/riding_item = I + var/mob/living/carried_mob = riding_item.rider + if(carried_mob == user) //Piggyback user. + return + switch(user.a_intent) + if(INTENT_HARM) + user.unbuckle_mob(carried_mob) + tableheadsmash(user, carried_mob) + if(INTENT_HELP) + var/tableplace_delay = 3.5 SECONDS + var/skills_space = "" + if(HAS_TRAIT(user, TRAIT_QUICKER_CARRY)) + tableplace_delay = 2 SECONDS + skills_space = " expertly" + else if(HAS_TRAIT(user, TRAIT_QUICK_CARRY)) + tableplace_delay = 2.75 SECONDS + skills_space = " quickly" + carried_mob.visible_message("[user] begins to[skills_space] place [carried_mob] onto [src]...", + "[user] begins to[skills_space] place [carried_mob] onto [src]...") + if(do_after(user, tableplace_delay, target = carried_mob)) + user.unbuckle_mob(carried_mob) + tableplace(user, carried_mob) + else + user.unbuckle_mob(carried_mob) + tablepush(user, carried_mob) + return TRUE + if(user.a_intent != INTENT_HARM && !(I.item_flags & ABSTRACT)) if(user.transferItemToLoc(I, drop_location(), silent = FALSE)) var/list/click_params = params2list(params) @@ -237,13 +265,13 @@ UnregisterSignal(source, COMSIG_MOVABLE_MOVED) /obj/structure/table/rolling/Moved(atom/OldLoc, Dir) + . = ..() for(var/mob/M in OldLoc.contents)//Kidnap everyone on top M.forceMove(loc) for(var/x in attached_items) var/atom/movable/AM = x if(!AM.Move(loc)) RemoveItemFromTable(AM, AM.loc) - return TRUE /* * Glass tables @@ -512,7 +540,7 @@ /obj/structure/table/optable/tablepush(mob/living/user, mob/living/pushed_mob) pushed_mob.forceMove(loc) pushed_mob.set_resting(TRUE, TRUE) - visible_message("[user] has laid [pushed_mob] on [src].") + visible_message("[user] lays [pushed_mob] on [src].") check_patient() /obj/structure/table/optable/proc/check_patient() diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 6f8bd2fcd6a..3bc0e8e0a6a 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -151,7 +151,14 @@ outside_tube() /obj/structure/transit_tube_pod/proc/outside_tube() + var/list/savedcontents = contents.Copy() + var/saveddir = dir + var/turf/destination = get_edge_target_turf(src,saveddir) + visible_message("[src] ejects its insides out!") deconstruct(FALSE)//we automatically deconstruct the pod + for(var/i in savedcontents) + var/atom/movable/AM = i + AM.throw_at(destination,rand(1,3),5) /obj/structure/transit_tube_pod/return_air() return air_contents diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index f3013cda82a..f68a17063df 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -61,6 +61,7 @@ animate(src, alpha = initial(alpha), time = time_between_triggers) /obj/structure/trap/Crossed(atom/movable/AM) + . = ..() if(last_trigger + time_between_triggers > world.time) return // Don't want the traps triggered by sparks, ghosts or projectiles. diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index cb2c0d83539..2d3280c1c8b 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -634,7 +634,6 @@ smooth = SMOOTH_TRUE state = RWINDOW_SECURE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) - level = 3 glass_amount = 2 /obj/structure/window/reinforced/fulltile/unanchored @@ -649,7 +648,6 @@ flags_1 = PREVENT_CLICK_UNDER_1 smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) - level = 3 glass_amount = 2 /obj/structure/window/reinforced/fulltile/ice @@ -657,7 +655,6 @@ icon_state = "ice_window" max_integrity = 150 canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) - level = 3 glass_amount = 2 /obj/structure/window/shuttle @@ -676,7 +673,6 @@ smooth = SMOOTH_TRUE canSmoothWith = null explosion_block = 3 - level = 3 glass_type = /obj/item/stack/sheet/titaniumglass glass_amount = 2 @@ -704,8 +700,7 @@ smooth = SMOOTH_TRUE canSmoothWith = null explosion_block = 3 - damage_deflection = 11 //The same as normal reinforced windows. - level = 3 + damage_deflection = 11 //The same as normal reinforced windows.3 glass_type = /obj/item/stack/sheet/plastitaniumglass glass_amount = 2 rad_insulation = RAD_HEAVY_INSULATION diff --git a/code/game/say.dm b/code/game/say.dm index 1bbb68a7719..fecf8d3e30d 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(freqtospan, list( SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, args) /atom/movable/proc/can_speak() + SHOULD_BE_PURE(TRUE) return 1 /atom/movable/proc/send_speech(message, range = 7, obj/source = src, bubble_type, list/spans, datum/language/message_language = null, message_mode) diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 9581d79a026..8965682a6e0 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -56,7 +56,8 @@ name = "Space Station 13" icon = 'icons/blank_title.png' icon_state = "" - layer = FLY_LAYER + layer = SPLASHSCREEN_LAYER + plane = SPLASHSCREEN_PLANE bullet_bounce_sound = null /turf/closed/indestructible/splashscreen/New() diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 01e1403521e..c043bd3150c 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -452,7 +452,7 @@ name = "gibtonite deposit" desc = "An active gibtonite reserve. Run!" stage = GIBTONITE_ACTIVE - visible_message("There was gibtonite inside! It's going to explode!") + visible_message("There's gibtonite inside! It's going to explode!") var/notify_admins = 0 if(z != 5) @@ -486,7 +486,7 @@ stage = GIBTONITE_STABLE if(det_time < 0) det_time = 0 - visible_message("The chain reaction was stopped! The gibtonite had [det_time] reactions left till the explosion!") + visible_message("The chain reaction stopped! The gibtonite had [det_time] reactions left till the explosion!") /turf/closed/mineral/gibtonite/gets_drilled(mob/user, triggered_by_explosion = 0) if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated @@ -499,7 +499,7 @@ stage = GIBTONITE_DETONATE explosion(bombturf,1,2,5, adminlog = 0) if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. - var/obj/item/twohanded/required/gibtonite/G = new (src) + var/obj/item/gibtonite/G = new (src) if(det_time <= 0) G.quality = 3 G.icon_state = "Gibtonite ore 3" diff --git a/code/game/turfs/closed/wall/material_walls.dm b/code/game/turfs/closed/wall/material_walls.dm new file mode 100644 index 00000000000..674d0030100 --- /dev/null +++ b/code/game/turfs/closed/wall/material_walls.dm @@ -0,0 +1,19 @@ +/turf/closed/wall/material + name = "wall" + desc = "A solid wall made out of a certain material" + icon = 'icons/turf/walls/materialwall.dmi' + icon_state = "wall" + canSmoothWith = list(/turf/closed/wall/material) + smooth = SMOOTH_TRUE + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + +/turf/closed/wall/material/break_wall() + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(src, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1)) + return new girder_type(src) + +/turf/closed/wall/material/devastate_wall() + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(src, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1)) diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 4837acde811..ec1fa3e49f2 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -135,7 +135,7 @@ /turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user) if(W.get_sharpness() && W.force) var/duration = (48/W.force) * 2 //In seconds, for now. - if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/twohanded/fireaxe)) + if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe)) duration /= 4 //Much better with hatchets and axes. if(do_after(user, duration*10, target=src)) //Into deciseconds. dismantle_wall(FALSE,FALSE) diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index c18db629678..c6bbe6ec5ee 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -98,8 +98,7 @@ /turf/open/floor/is_shielded() for(var/obj/structure/A in contents) - if(A.level == 3) - return 1 + return 1 /turf/open/floor/blob_act(obj/structure/blob/B) return @@ -186,9 +185,12 @@ if(user && !silent) to_chat(user, "You remove the floor tile.") if(floor_tile && make_tile) - new floor_tile(src) + spawn_tile() return make_plating() +/turf/open/floor/proc/spawn_tile() + new floor_tile(src) + /turf/open/floor/singularity_pull(S, current_size) ..() if(current_size == STAGE_THREE) @@ -292,3 +294,14 @@ return TRUE return FALSE + +/turf/open/floor/material + name = "plating" + desc = "A flooring made out of a certain material" + icon_state = "materialfloor" + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + +/turf/open/floor/material/spawn_tile() + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(src, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1)) diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm index e545e406566..3a82d17738e 100644 --- a/code/game/turfs/open/floor/fancy_floor.dm +++ b/code/game/turfs/open/floor/fancy_floor.dm @@ -111,6 +111,7 @@ icon = 'icons/turf/snow.dmi' desc = "Looks cold." icon_state = "snow" + broken_states = list("snow_dug") ore_type = /obj/item/stack/sheet/mineral/snow planetary_atmos = TRUE floor_tile = null diff --git a/code/game/turfs/open/floor/hull.dm b/code/game/turfs/open/floor/hull.dm new file mode 100644 index 00000000000..520c9499330 --- /dev/null +++ b/code/game/turfs/open/floor/hull.dm @@ -0,0 +1,19 @@ + +/turf/open/floor/engine/hull + name = "exterior hull plating" + desc = "Sturdy exterior hull plating that separates you from the uncaring vacuum of space." + icon_state = "regular_hull" + initial_gas_mix = AIRLESS_ATMOS + temperature = TCMB + +/turf/open/floor/engine/hull/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) //no rcd destroying this flooring + if(passed_mode == RCD_DECONSTRUCT) + to_chat(user, "The flooring is too thick to be regularly deconstructed!") + return FALSE + return ..() + +/turf/open/floor/engine/hull/reinforced + name = "exterior reinforced hull plating" + desc = "Extremely sturdy exterior hull plating that separates you from the uncaring vacuum of space." + icon_state = "reinforced_hull" + heat_capacity = INFINITY diff --git a/code/game/turfs/open/floor/misc_floor.dm b/code/game/turfs/open/floor/misc_floor.dm index 636d6cf4f1d..8e9a9ec7229 100644 --- a/code/game/turfs/open/floor/misc_floor.dm +++ b/code/game/turfs/open/floor/misc_floor.dm @@ -173,3 +173,10 @@ custom_materials = list(/datum/material/plastic=500) floor_tile = /obj/item/stack/tile/plastic broken_states = list("plastic-damaged1","plastic-damaged2") + +/turf/open/floor/eighties + name = "retro floor" + desc = "This one takes you back." + icon_state = "eighties" + floor_tile = /obj/item/stack/tile/eighties + broken_states = list("damaged") diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm index b67a0b2c25e..746e4c7a949 100644 --- a/code/game/turfs/open/floor/plating.dm +++ b/code/game/turfs/open/floor/plating.dm @@ -73,18 +73,22 @@ else if(istype(C, /obj/item/stack/tile)) if(!broken && !burnt) for(var/obj/O in src) - if(O.level == 1) //ex. pipes laid underneath a tile - for(var/M in O.buckled_mobs) - to_chat(user, "Someone is buckled to \the [O]! Unbuckle [M] to move \him out of the way.") - return + for(var/M in O.buckled_mobs) + to_chat(user, "Someone is buckled to \the [O]! Unbuckle [M] to move \him out of the way.") + return var/obj/item/stack/tile/W = C if(!W.use(1)) return - var/turf/open/floor/T = PlaceOnTop(W.turf_type, flags = CHANGETURF_INHERIT_AIR) - if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow - var/obj/item/stack/tile/light/L = W - var/turf/open/floor/light/F = T - F.state = L.state + if(istype(W, /obj/item/stack/tile/material)) + var/turf/newturf = PlaceOnTop(/turf/open/floor/material, flags = CHANGETURF_INHERIT_AIR) + newturf.set_custom_materials(W.custom_materials) + else if(W.turf_type) + var/turf/open/floor/T = PlaceOnTop(W.turf_type, flags = CHANGETURF_INHERIT_AIR) + if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow + var/obj/item/stack/tile/light/L = W + var/turf/open/floor/light/F = T + F.state = L.state + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) else to_chat(user, "This section is too damaged to support a tile! Use a welder to fix the damage.") diff --git a/code/game/turfs/open/floor/plating/asteroid.dm b/code/game/turfs/open/floor/plating/asteroid.dm index 599a2359557..76e96771211 100644 --- a/code/game/turfs/open/floor/plating/asteroid.dm +++ b/code/game/turfs/open/floor/plating/asteroid.dm @@ -327,6 +327,7 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me environment_type = "snow" flags_1 = NONE planetary_atmos = TRUE + broken_states = list("snow_dug") burnt_states = list("snow_dug") bullet_sizzle = TRUE bullet_bounce_sound = null diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index f06a82a314c..6d2a5c37211 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -1,21 +1,41 @@ +GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdrop, new) + +/atom/movable/openspace_backdrop + name = "openspace_backdrop" + + anchored = TRUE + + icon = 'icons/turf/floors.dmi' + icon_state = "grey" + plane = OPENSPACE_BACKDROP_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = SPLASHSCREEN_LAYER + /turf/open/openspace name = "open space" desc = "Watch your step!" - icon_state = "grey" + icon_state = "transparent" baseturfs = /turf/open/openspace CanAtmosPassVertical = ATMOS_PASS_YES //mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/can_cover_up = TRUE var/can_build_on = TRUE + intact = 0 +/turf/open/openspace/airless + initial_gas_mix = AIRLESS_ATMOS + /turf/open/openspace/debug/update_multiz() ..() return TRUE /turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker . = ..() - plane = FLOOR_OPENSPACE_PLANE + plane = OPENSPACE_PLANE layer = OPENSPACE_LAYER + + vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it. + return INITIALIZE_HINT_LATELOAD /turf/open/openspace/LateInitialize() @@ -25,6 +45,11 @@ vis_contents.len = 0 return ..() +/turf/open/openspace/can_have_cabling() + if(locate(/obj/structure/lattice/catwalk, src)) + return TRUE + return FALSE + /turf/open/openspace/update_multiz(prune_on_fail = FALSE, init = FALSE) . = ..() var/turf/T = below() diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index 36ef1ecdead..e6179595613 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -23,11 +23,19 @@ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED bullet_bounce_sound = null + vis_flags = VIS_INHERIT_ID //when this be added to vis_contents of something it be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf. + /turf/open/space/basic/New() //Do not convert to Initialize //This is used to optimize the map loader return +/** + * Space Initialize + * + * Doesn't call parent, see [/atom/proc/Initialize] + */ /turf/open/space/Initialize() + SHOULD_CALL_PARENT(FALSE) icon_state = SPACE_ICON_STATE air = space_gas vis_contents.Cut() //removes inherited overlays diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 2ef3282b99c..00f0ff1bfed 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -1,6 +1,5 @@ /turf icon = 'icons/turf/floors.dmi' - level = 1 var/intact = 1 @@ -33,13 +32,21 @@ var/tiled_dirt = FALSE // use smooth tiled dirt decal + vis_flags = VIS_INHERIT_PLANE|VIS_INHERIT_ID //when this be added to vis_contents of something it inherit something.plane and be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf. + /turf/vv_edit_var(var_name, new_value) var/static/list/banned_edits = list("x", "y", "z") if(var_name in banned_edits) return FALSE . = ..() +/** + * Turf Initialize + * + * Doesn't call parent, see [/atom/proc/Initialize] + */ /turf/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 @@ -80,6 +87,15 @@ if (opacity) has_opaque_atom = TRUE + if(custom_materials) + + var/temp_list = list() + for(var/i in custom_materials) + temp_list[SSmaterials.GetMaterialRef(i)] = custom_materials[i] //Get the proper instanced version + + custom_materials = null //Null the list to prepare for applying the materials properly + set_custom_materials(temp_list) + ComponentInitialize() return INITIALIZE_HINT_NORMAL @@ -158,6 +174,7 @@ return TRUE /turf/proc/can_zFall(atom/movable/A, levels = 1, turf/target) + SHOULD_BE_PURE(TRUE) return zPassOut(A, DOWN, target) && target.zPassIn(A, DOWN, src) /turf/proc/zFall(atom/movable/A, levels = 1, force = FALSE) @@ -172,7 +189,7 @@ target.zImpact(A, levels, src) return TRUE -/turf/proc/handleRCL(obj/item/twohanded/rcl/C, mob/user) +/turf/proc/handleRCL(obj/item/rcl/C, mob/user) if(C.loaded) for(var/obj/structure/pipe_cleaner/LC in src) if(!LC.d1 || !LC.d2) @@ -199,7 +216,7 @@ coil.place_turf(src, user) return TRUE - else if(istype(C, /obj/item/twohanded/rcl)) + else if(istype(C, /obj/item/rcl)) handleRCL(C, user) return FALSE @@ -324,14 +341,12 @@ /turf/proc/levelupdate() for(var/obj/O in src) - if(O.level == 1 && (O.flags_1 & INITIALIZED_1)) - O.hide(src.intact) + if(O.flags_1 & INITIALIZED_1) + SEND_SIGNAL(O, COMSIG_OBJ_HIDE, intact) // override for space turfs, since they should never hide anything /turf/open/space/levelupdate() - for(var/obj/O in src) - if(O.level == 1 && (O.flags_1 & INITIALIZED_1)) - O.hide(0) + return // Removes all signs of lattice on the pos of the turf -Donkieyo /turf/proc/RemoveLattice() @@ -380,8 +395,6 @@ /turf/singularity_act() if(intact) for(var/obj/O in contents) //this is for deleting things like wires contained in the turf - if(O.level != 1) - continue if(O.invisibility == INVISIBILITY_MAXIMUM) O.singularity_act() ScrapeAway(flags = CHANGETURF_INHERIT_AIR) @@ -409,19 +422,10 @@ /turf/proc/is_shielded() /turf/contents_explosion(severity, target) - var/affecting_level - if(severity == 1) - affecting_level = 1 - else if(is_shielded()) - affecting_level = 3 - else if(intact) - affecting_level = 2 - else - affecting_level = 1 for(var/V in contents) var/atom/A = V - if(!QDELETED(A) && A.level >= affecting_level) + if(!QDELETED(A)) if(ismovable(A)) var/atom/movable/AM = A if(!AM.ex_check(explosion_id)) @@ -470,11 +474,9 @@ acid_type = /obj/effect/acid/alien var/has_acid_effect = FALSE for(var/obj/O in src) - if(intact && O.level == 1) //hidden under the floor - continue if(istype(O, acid_type)) var/obj/effect/acid/A = O - A.acid_level = min(A.level + acid_volume * acidpwr, 12000)//capping acid level to limit power of the acid + A.acid_level = min(acid_volume * acidpwr, 12000)//capping acid level to limit power of the acid has_acid_effect = 1 continue O.acid_act(acidpwr, acid_volume) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index e62edeb47c6..e654508a6d6 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -127,7 +127,7 @@ L.forceMove(LA) L.hallucination = 0 to_chat(L, "The battle is won. Your bloodlust subsides.") - for(var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw in L) + for(var/obj/item/chainsaw/doomslayer/chainsaw in L) qdel(chainsaw) else to_chat(L, "You are not yet worthy of passing. Drag a severed head to the barrier to be allowed entry to the hall of champions.") diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 872adc3b4ef..c6c80119a9a 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -56,11 +56,20 @@ locked_tabs = new Array(); } - function expand(id,job,name,real_name,old_names,key,ip,antagonist,ref){ + function expand(data_id,target_id){ + + job = document.getElementById(data_id+"_job").textContent + name = document.getElementById(data_id+"_name").textContent + real_name = document.getElementById(data_id+"_rname").textContent + old_names = document.getElementById(data_id+"_prevnames").textContent + key = document.getElementById(data_id+"_key").textContent + ip = document.getElementById(data_id+"_lastip").textContent + antagonist = document.getElementById(data_id+"_isantag").textContent + ref = document.getElementById(data_id+"_ref").textContent clearAll(); - var span = document.getElementById(id); + var span = document.getElementById(target_id); var ckey = key.toLowerCase().replace(/\[^a-z@0-9\]+/g,""); body = "
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index b48a8a23043..b08d83e4287 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -200,7 +200,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) SSredbot.send_discord_message("admin", "Ticket #[id] created by [usr.ckey] ([usr.real_name]): [name]", "ticket") //send it to TGS if nobody is on and tell us how many were on - var/admin_number_present = send2tgs_adminless_only(initiator_ckey, "Ticket #[id]: [name]") + var/admin_number_present = send2tgs_adminless_only(initiator_ckey, "Ticket #[id]: [msg]") log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) to_chat(C, "No active admins are online, your adminhelp was sent through TGS to admins who are available. This may use IRC or Discord.") diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index cb9f0c4a98c..faad838fd4f 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -342,7 +342,7 @@ ertemplate.enforce_human = prefs["enforce_human"]["value"] == "Yes" ? TRUE : FALSE ertemplate.opendoors = prefs["open_armory"]["value"] == "Yes" ? TRUE : FALSE - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc] ?", "deathsquad", null) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc]?", "deathsquad", null) var/teamSpawned = FALSE if(candidates.len > 0) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index df501de1281..92f37be69aa 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -49,9 +49,15 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/specialization(datum/mind/new_owner) return src +///Called by the transfer_to() mind proc after the mind (mind.current and new_character.mind) has moved but before the player (key and client) is transfered. /datum/antagonist/proc/on_body_transfer(mob/living/old_body, mob/living/new_body) + SHOULD_CALL_PARENT(TRUE) remove_innate_effects(old_body) + if(old_body.stat != DEAD && !LAZYLEN(old_body.mind?.antag_datums)) + old_body.remove_from_current_living_antags() apply_innate_effects(new_body) + if(new_body.stat != DEAD) + new_body.add_to_current_living_antags() //This handles the application of antag huds/special abilities /datum/antagonist/proc/apply_innate_effects(mob/living/mob_override) @@ -89,17 +95,23 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/create_team(datum/team/team) return -//Proc called when the datum is given to a mind. +///Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list. /datum/antagonist/proc/on_gain() - if(owner && owner.current) - if(!silent) - greet() - apply_innate_effects() - give_antag_moodies() - if(is_banned(owner.current) && replace_banned) - replace_banned_player() - else if(owner.current.client?.holder && (CONFIG_GET(flag/auto_deadmin_antagonists) || owner.current.client.prefs?.toggles & DEADMIN_ANTAGONIST)) - owner.current.client.holder.auto_deadmin() + SHOULD_CALL_PARENT(TRUE) + if(!owner) + CRASH("[src] ran on_gain() without a mind") + if(!owner.current) + CRASH("[src] ran on_gain() on a mind without a mob") + if(!silent) + greet() + apply_innate_effects() + give_antag_moodies() + if(is_banned(owner.current) && replace_banned) + replace_banned_player() + else if(owner.current.client?.holder && (CONFIG_GET(flag/auto_deadmin_antagonists) || owner.current.client.prefs?.toggles & DEADMIN_ANTAGONIST)) + owner.current.client.holder.auto_deadmin() + if(owner.current.stat != DEAD) + owner.current.add_to_current_living_antags() /datum/antagonist/proc/is_banned(mob/M) if(!M) @@ -117,11 +129,15 @@ GLOBAL_LIST_EMPTY(antagonists) owner.current.ghostize(0) owner.current.key = C.key +///Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion. /datum/antagonist/proc/on_removal() + SHOULD_CALL_PARENT(TRUE) remove_innate_effects() clear_antag_moodies() if(owner) LAZYREMOVE(owner.antag_datums, src) + if(!LAZYLEN(owner.antag_datums)) + owner.current.remove_from_current_living_antags() if(!silent && owner.current) farewell() var/datum/team/team = get_team() diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 3a8836eb124..d43423c81b7 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -567,7 +567,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} "You feel a strange wave of heavy drowsiness wash over you, but your tinfoil protection deflects most of it!") L.drowsyness += 2 return - L.visible_message("[user] has induced sleep in [L] with [src]!", \ + L.visible_message("[user] induces sleep in [L] with [src]!", \ "You suddenly feel very drowsy!") L.Sleeping(sleep_time) log_combat(user, L, "put to sleep") diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm index 5c0878017d2..bc8e9149d91 100644 --- a/code/modules/antagonists/abductor/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -59,6 +59,10 @@ return HAS_TRAIT(H, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) /datum/action/innate/teleport_in +///Is the amount of time required between uses + var/abductor_pad_cooldown = 8 SECONDS +///Is used to compare to world.time in order to determine if the action should early return + var/use_delay name = "Send To" icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' button_icon_state = "beam_down" @@ -66,9 +70,13 @@ /datum/action/innate/teleport_in/Activate() if(!target || !iscarbon(owner)) return + if(world.time < use_delay) + to_chat(owner, "You must wait [DisplayTimeText(use_delay - world.time)] to use the [target] again!") + return var/mob/living/carbon/human/C = owner var/mob/camera/aiEye/remote/remote_eye = C.remote_control var/obj/machinery/abductor/pad/P = target + use_delay = (world.time + abductor_pad_cooldown) if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) P.PadToLoc(remote_eye.loc) @@ -86,6 +94,9 @@ console.TeleporterRetrieve() /datum/action/innate/teleport_self +///Is the amount of time required between uses + var/teleport_self_cooldown = 9 SECONDS + var/use_delay name = "Send Self" icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' button_icon_state = "beam_down" @@ -93,9 +104,13 @@ /datum/action/innate/teleport_self/Activate() if(!target || !iscarbon(owner)) return + if(world.time < use_delay) + to_chat(owner, "You can only teleport to one place at a time!") + return var/mob/living/carbon/human/C = owner var/mob/camera/aiEye/remote/remote_eye = C.remote_control var/obj/machinery/abductor/pad/P = target + use_delay = (world.time + teleport_self_cooldown) if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) P.MobToLoc(remote_eye.loc,C) diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm index 5e2abc9fd08..be96b495e13 100644 --- a/code/modules/antagonists/ashwalker/ashwalker.dm +++ b/code/modules/antagonists/ashwalker/ashwalker.dm @@ -1,6 +1,7 @@ /datum/team/ashwalkers name = "Ashwalkers" show_roundend_report = FALSE + var/list/players_spawned = new /datum/antagonist/ashwalker name = "Ash Walker" @@ -21,13 +22,16 @@ return ashie_team /datum/antagonist/ashwalker/on_body_transfer(mob/living/old_body, mob/living/new_body) + . = ..() UnregisterSignal(old_body, COMSIG_MOB_EXAMINATE) RegisterSignal(new_body, COMSIG_MOB_EXAMINATE, .proc/on_examinate) /datum/antagonist/ashwalker/on_gain() + . = ..() RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, .proc/on_examinate) /datum/antagonist/ashwalker/on_removal() + . = ..() UnregisterSignal(owner.current, COMSIG_MOB_EXAMINATE) /datum/antagonist/ashwalker/proc/on_examinate(datum/source, atom/A) diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 93c18c56313..bb79a4e9eef 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -15,8 +15,12 @@ maxbodytemp = 360 unique_name = 1 a_intent = INTENT_HARM + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + initial_language_holder = /datum/language_holder/empty var/mob/camera/blob/overmind = null var/obj/structure/blob/factory/factory = null + var/independent = FALSE /mob/living/simple_animal/hostile/blob/update_icons() if(overmind) @@ -24,6 +28,13 @@ else remove_atom_colour(FIXED_COLOUR_PRIORITY) +/mob/living/simple_animal/hostile/blob/Initialize() + . = ..() + if(!independent) //no pulling people deep into the blob + verbs -= /mob/living/verb/pulled + else + pass_flags &= ~PASSBLOB + /mob/living/simple_animal/hostile/blob/Destroy() if(overmind) overmind.blob_mobs -= src @@ -56,8 +67,11 @@ return 1 return ..() -/mob/living/simple_animal/hostile/blob/proc/blob_chat(msg) - var/spanned_message = say_quote(msg) +/mob/living/simple_animal/hostile/blob/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + if(!overmind) + ..() + return + var/spanned_message = say_quote(message) var/rendered = "\[Blob Telepathy\] [real_name] [spanned_message]" for(var/M in GLOB.mob_list) if(isovermind(M) || istype(M, /mob/living/simple_animal/hostile/blob)) @@ -75,6 +89,7 @@ desc = "A floating, fragile spore." icon_state = "blobpod" icon_living = "blobpod" + health_doll_icon = "blobpod" health = 30 maxHealth = 30 verb_say = "psychically pulses" @@ -89,18 +104,20 @@ attack_verb_simple = "hit" attack_sound = 'sound/weapons/genhit1.ogg' movement_type = FLYING - del_on_death = 1 + del_on_death = TRUE deathmessage = "explodes into a cloud of gas!" + gold_core_spawnable = HOSTILE_SPAWN var/death_cloud_size = 1 //size of cloud produced from a dying spore var/mob/living/carbon/human/oldguy - var/is_zombie = 0 - gold_core_spawnable = HOSTILE_SPAWN + var/is_zombie = FALSE /mob/living/simple_animal/hostile/blob/blobspore/Initialize(mapload, obj/structure/blob/factory/linked_node) if(istype(linked_node)) factory = linked_node factory.spores += src . = ..() + if(linked_node.overmind && istype(linked_node.overmind.blobstrain, /datum/blobstrain/reagent/distributed_neurons) && !istype(src, /mob/living/simple_animal/hostile/blob/blobspore/weak)) + notify_ghosts("A controllable spore has been created in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Sentient Spore Created") /mob/living/simple_animal/hostile/blob/blobspore/Life() if(!is_zombie && isturf(src.loc)) @@ -111,6 +128,26 @@ if(factory && z != factory.z) death() ..() + +/mob/living/simple_animal/hostile/blob/blobspore/attack_ghost(mob/user) + . = ..() + if(.) + return + humanize_pod(user) + +/mob/living/simple_animal/hostile/blob/blobspore/proc/humanize_pod(mob/user) + if((!overmind || istype(src, /mob/living/simple_animal/hostile/blob/blobspore/weak) || !istype(overmind.blobstrain, /datum/blobstrain/reagent/distributed_neurons)) && !is_zombie) + return + if(key || stat) + return + var/pod_ask = alert("Become a blob spore?", "Are you bulbous enough?", "Yes", "No") + if(pod_ask == "No" || !src || QDELETED(src)) + return + if(key) + to_chat(user, "Someone else already took this spore!") + return + key = user.key + log_game("[key_name(src)] took control of [name].") /mob/living/simple_animal/hostile/blob/blobspore/proc/Zombify(mob/living/carbon/human/H) is_zombie = 1 @@ -134,6 +171,8 @@ oldguy = H update_icons() visible_message("The corpse of [H.name] suddenly rises!") + if(!key) + notify_ghosts("\A [src] has been created in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Blob Zombie Created") /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) // On death, create a small smoke of harmful gas (s-Acid) @@ -215,17 +254,7 @@ force_threshold = 10 pressure_resistance = 50 mob_size = MOB_SIZE_LARGE - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE hud_type = /datum/hud/blobbernaut - var/independent = FALSE - -/mob/living/simple_animal/hostile/blob/blobbernaut/Initialize() - . = ..() - if(!independent) //no pulling people deep into the blob - verbs -= /mob/living/verb/pulled - else - pass_flags &= ~PASSBLOB /mob/living/simple_animal/hostile/blob/blobbernaut/Life() if(..()) diff --git a/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm new file mode 100644 index 00000000000..27edb0f205f --- /dev/null +++ b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm @@ -0,0 +1,39 @@ +//kills unconscious targets and turns them into blob zombies, produces fragile spores when killed. Spore produced by factories are sentient. +/datum/blobstrain/reagent/distributed_neurons + name = "Distributed Neurons" + description = "will do very low toxin damage and turns unconscious targets into blob zombies." + effectdesc = "will also produce fragile spores when killed. Spores produced by factories are sentient." + shortdesc = "will do very low toxin damage and will turn unconscious targets into blob zombies for additional resources(for your overmind). Spores produced by factories are sentient." + analyzerdescdamage = "Does very low toxin damage and kills unconscious humans, turning them into blob zombies." + analyzerdesceffect = "Produces spores when killed. Spores produced by factories are sentient." + color = "#E88D5D" + complementary_color = "#823ABB" + message_living = ", and you feel tired" + reagent = /datum/reagent/blob/distributed_neurons + +/datum/blobstrain/reagent/distributed_neurons/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag) + if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage <= 20 && B.obj_integrity - damage <= 0 && prob(15)) //if the cause isn't fire or a bomb, the damage is less than 21, we're going to die from that damage, 15% chance of a shitty spore. + B.visible_message("A spore floats free of the blob!") + var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(B.loc) + BS.overmind = B.overmind + BS.update_icons() + B.overmind.blob_mobs.Add(BS) + return ..() + +/datum/reagent/blob/distributed_neurons + name = "Distributed Neurons" + color = "#E88D5D" + +/datum/reagent/blob/distributed_neurons/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + reac_volume = ..() + M.apply_damage(0.6*reac_volume, TOX) + if(O && ishuman(M) && M.stat == UNCONSCIOUS) + M.death() //sleeping in a fight? bad plan. + var/points = rand(5, 10) + var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(get_turf(M)) + BS.overmind = O + BS.update_icons() + O.blob_mobs.Add(BS) + BS.Zombify(M) + O.add_points(points) + to_chat(O, "Gained [points] resources from the zombification of [M].") diff --git a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm b/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm deleted file mode 100644 index b2bb9d51157..00000000000 --- a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm +++ /dev/null @@ -1,46 +0,0 @@ -//kills sleeping targets and turns them into blob zombies, produces fragile spores when killed or on expanding -/datum/blobstrain/reagent/zombifying_pods - name = "Zombifying Pods" - description = "will do very low toxin damage and harvest sleeping targets for additional resources and a blob zombie." - effectdesc = "will also produce fragile spores when killed and on expanding." - shortdesc = "will do very low toxin damage and harvest sleeping targets for additional resources(for your overmind) and a blob zombie." - analyzerdescdamage = "Does very low toxin damage and kills unconscious humans, turning them into blob zombies." - analyzerdesceffect = "Produces spores when expanding and when killed." - color = "#E88D5D" - complementary_color = "#823ABB" - message_living = ", and you feel tired" - reagent = /datum/reagent/blob/zombifying_pods - -/datum/blobstrain/reagent/zombifying_pods/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag) - if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage <= 20 && B.obj_integrity - damage <= 0 && prob(30)) //if the cause isn't fire or a bomb, the damage is less than 21, we're going to die from that damage, 20% chance of a shitty spore. - B.visible_message("A spore floats free of the blob!") - var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(B.loc) - BS.overmind = B.overmind - BS.update_icons() - B.overmind.blob_mobs.Add(BS) - return ..() - -/datum/blobstrain/reagent/zombifying_pods/expand_reaction(obj/structure/blob/B, obj/structure/blob/newB, turf/T, mob/camera/blob/O) - if(prob(10)) - var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(T) - BS.overmind = B.overmind - BS.update_icons() - newB.overmind.blob_mobs.Add(BS) - -/datum/reagent/blob/zombifying_pods - name = "Zombifying Pods" - color = "#E88D5D" - -/datum/reagent/blob/zombifying_pods/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - reac_volume = ..() - M.apply_damage(0.6*reac_volume, TOX) - if(O && ishuman(M) && M.stat == UNCONSCIOUS) - M.death() //sleeping in a fight? bad plan. - var/points = rand(5, 10) - var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(get_turf(M)) - BS.overmind = O - BS.update_icons() - O.blob_mobs.Add(BS) - BS.Zombify(M) - O.add_points(points) - to_chat(O, "Gained [points] resources from the zombification of [M].") diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index c86c9fb4168..0d516e821a7 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -39,6 +39,9 @@ GLOBAL_LIST_EMPTY(blob_nodes) var/blobwincount = 400 var/victory_in_progress = FALSE var/rerolling = FALSE + var/announcement_size = 75 + var/announcement_time + var/has_announced = FALSE /mob/camera/blob/Initialize(mapload, starting_points = 60) validate_location() @@ -56,6 +59,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(blob_core) blob_core.update_icon() SSshuttle.registerHostileEnvironment(src) + announcement_time = world.time + 6000 . = ..() START_PROCESSING(SSobj, src) @@ -118,6 +122,10 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!victory_in_progress && max_count < blobs_legit.len) max_count = blobs_legit.len + + if((world.time >= announcement_time || blobs_legit.len >= announcement_size) && !has_announced) + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + has_announced = TRUE /mob/camera/blob/proc/victory() sound_to_playing_players('sound/machines/alarm.ogg') diff --git a/code/modules/antagonists/blob/powers.dm b/code/modules/antagonists/blob/powers.dm index 794819db9b8..2289e163052 100644 --- a/code/modules/antagonists/blob/powers.dm +++ b/code/modules/antagonists/blob/powers.dm @@ -318,7 +318,7 @@ if(!surrounding_turfs.len) return for(var/mob/living/simple_animal/hostile/blob/blobspore/BS in blob_mobs) - if(isturf(BS.loc) && get_dist(BS, T) <= 35) + if(isturf(BS.loc) && get_dist(BS, T) <= 35 && !BS.key) BS.LoseTarget() BS.Goto(pick(surrounding_turfs), BS.move_to_delay) diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm index c2ae02c5ce3..0dc9d8b43df 100644 --- a/code/modules/antagonists/blob/structures/core.dm +++ b/code/modules/antagonists/blob/structures/core.dm @@ -8,6 +8,7 @@ explosion_block = 6 point_return = -1 health_regen = 0 //we regen in Life() instead of when pulsed + resistance_flags = LAVA_PROOF /obj/structure/blob/core/Initialize(mapload, client/new_overmind = null, placed = 0) GLOB.blob_cores += src @@ -18,12 +19,8 @@ return INITIALIZE_HINT_QDEL if(overmind) update_icon() - addtimer(CALLBACK(src, .proc/generate_announcement), 1800) . = ..() -/obj/structure/blob/core/proc/generate_announcement() - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') - /obj/structure/blob/core/scannerreport() return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." diff --git a/code/modules/antagonists/blob/structures/factory.dm b/code/modules/antagonists/blob/structures/factory.dm index 3d955036b01..756d1b03fab 100644 --- a/code/modules/antagonists/blob/structures/factory.dm +++ b/code/modules/antagonists/blob/structures/factory.dm @@ -6,6 +6,7 @@ max_integrity = 200 health_regen = 1 point_return = 25 + resistance_flags = LAVA_PROOF var/list/spores = list() var/mob/living/simple_animal/hostile/blob/blobbernaut/naut = null var/max_spores = 3 diff --git a/code/modules/antagonists/blob/structures/node.dm b/code/modules/antagonists/blob/structures/node.dm index 14fbc741c0b..8a8645c1518 100644 --- a/code/modules/antagonists/blob/structures/node.dm +++ b/code/modules/antagonists/blob/structures/node.dm @@ -7,6 +7,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 65, "acid" = 90) health_regen = 3 point_return = 25 + resistance_flags = LAVA_PROOF /obj/structure/blob/node/Initialize() diff --git a/code/modules/antagonists/blob/structures/resource.dm b/code/modules/antagonists/blob/structures/resource.dm index 5024d0984c1..81eda7f4edd 100644 --- a/code/modules/antagonists/blob/structures/resource.dm +++ b/code/modules/antagonists/blob/structures/resource.dm @@ -5,6 +5,7 @@ desc = "A thin spire of slightly swaying tendrils." max_integrity = 60 point_return = 15 + resistance_flags = LAVA_PROOF var/resource_delay = 0 /obj/structure/blob/resource/scannerreport() diff --git a/code/modules/antagonists/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm index d5105ec2d15..7f0e9e2f4c9 100644 --- a/code/modules/antagonists/changeling/powers/regenerate.dm +++ b/code/modules/antagonists/changeling/powers/regenerate.dm @@ -26,8 +26,8 @@ C.regenerate_limbs(1) if(!user.getorganslot(ORGAN_SLOT_BRAIN)) var/obj/item/organ/brain/B - if(C.has_dna() && C.dna.species.mutant_brain) - B = new C.dna.species.mutant_brain() + if(C.has_dna() && C.dna.species.mutantbrain) + B = new C.dna.species.mutantbrain() else B = new() B.organ_flags &= ~ORGAN_VITAL diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index 4432aa21fa0..8844c5844c3 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -18,7 +18,7 @@ if(active) to_chat(user, "Our muscles tense and strengthen.") else - user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) + user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) to_chat(user, "Our muscles relax.") if(stacks >= 10) to_chat(user, "We collapse in exhaustion.") @@ -31,12 +31,12 @@ /datum/action/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) while(active) - user.add_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + user.add_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") user.Paralyze(40) - user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) + user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) break stacks++ diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index cda2660e926..4e03ac8f281 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -20,7 +20,6 @@ var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.chosen_sting = src - user.hud_used.lingstingdisplay.icon = icon_icon user.hud_used.lingstingdisplay.icon_state = button_icon_state user.hud_used.lingstingdisplay.invisibility = 0 diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 88b04d5d0b5..110b959dda1 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -601,7 +601,7 @@ if(QDELETED(candidate)) channeling = FALSE return - user.visible_message("The dark cloud receedes from what was formerly [candidate], revealing a\n [construct_class]!") + user.visible_message("The dark cloud recedes from what was formerly [candidate], revealing a\n [construct_class]!") switch(construct_class) if("Juggernaut") makeNewConstruct(/mob/living/simple_animal/hostile/construct/armored, candidate, user, 0, T) @@ -734,7 +734,7 @@ uses += 50 user.Beam(H,icon_state="drainbeam",time=10) playsound(get_turf(H), 'sound/magic/enter_blood.ogg', 50) - H.visible_message("[user] has drained some of [H]'s blood!") + H.visible_message("[user] drains some of [H]'s blood!") to_chat(user,"Your blood rite gains 50 charges from draining [H]'s blood.") new /obj/effect/temp_visual/cult/sparks(get_turf(H)) else @@ -799,7 +799,7 @@ var/turf/T = get_turf(user) qdel(src) var/datum/action/innate/cult/spear/S = new(user) - var/obj/item/twohanded/cult_spear/rite = new(T) + var/obj/item/cult_spear/rite = new(T) S.Grant(user, rite) rite.spear_act = S if(user.put_in_hands(rite)) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 1824eaa0bff..c786d7ff02f 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -77,7 +77,7 @@ if(!iscultist(user)) to_chat(user, "\"I wouldn't advise that.\"") -/obj/item/twohanded/required/cult_bastard +/obj/item/cult_bastard name = "bloody bastard sword" desc = "An enormous sword used by Nar'Sien cultists to rapidly harvest the souls of non-believers." w_class = WEIGHT_CLASS_HUGE @@ -105,31 +105,32 @@ var/spin_cooldown = 250 var/dash_toggled = TRUE -/obj/item/twohanded/required/cult_bastard/Initialize() +/obj/item/cult_bastard/Initialize() . = ..() set_light(4) jaunt = new(src) linked_action = new(src) AddComponent(/datum/component/butchering, 50, 80) + AddComponent(/datum/component/two_handed, require_twohands=TRUE) -/obj/item/twohanded/required/cult_bastard/examine(mob/user) +/obj/item/cult_bastard/examine(mob/user) . = ..() if(contents.len) . += "There are [contents.len] souls trapped within the sword's core." else . += "The sword appears to be quite lifeless." -/obj/item/twohanded/required/cult_bastard/can_be_pulled(user) +/obj/item/cult_bastard/can_be_pulled(user) return FALSE -/obj/item/twohanded/required/cult_bastard/attack_self(mob/user) +/obj/item/cult_bastard/attack_self(mob/user) dash_toggled = !dash_toggled if(dash_toggled) to_chat(loc, "You raise [src] and prepare to jaunt with it.") else to_chat(loc, "You lower [src] and prepare to swing it normally.") -/obj/item/twohanded/required/cult_bastard/pickup(mob/living/user) +/obj/item/cult_bastard/pickup(mob/living/user) . = ..() if(!iscultist(user)) to_chat(user, "\"I wouldn't advise that.\"") @@ -140,20 +141,20 @@ linked_action.Grant(user, src) user.update_icons() -/obj/item/twohanded/required/cult_bastard/dropped(mob/user) +/obj/item/cult_bastard/dropped(mob/user) . = ..() linked_action.Remove(user) jaunt.Remove(user) user.update_icons() -/obj/item/twohanded/required/cult_bastard/IsReflect() +/obj/item/cult_bastard/IsReflect() if(spinning) playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, TRUE) return TRUE else ..() -/obj/item/twohanded/required/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(prob(final_block_chance)) if(attack_type == PROJECTILE_ATTACK) owner.visible_message("[owner] deflects [attack_text] with [src]!") @@ -165,7 +166,7 @@ return TRUE return FALSE -/obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) +/obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) . = ..() if(dash_toggled && !proximity) jaunt.Teleport(user, target) @@ -210,7 +211,7 @@ button_icon_state = "sintouch" var/cooldown = 0 var/mob/living/carbon/human/holder - var/obj/item/twohanded/required/cult_bastard/sword + var/obj/item/cult_bastard/sword /datum/action/innate/cult/spin2win/Grant(mob/user, obj/bastard) . = ..() @@ -609,7 +610,7 @@ to_chat(user, "\The [src] can only transport items!") -/obj/item/twohanded/cult_spear +/obj/item/cult_spear name = "blood halberd" desc = "A sickening spear composed entirely of crystallized blood." icon_state = "bloodspear0" @@ -617,7 +618,6 @@ righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' slot_flags = 0 force = 17 - force_wielded = 24 throwforce = 40 throw_speed = 2 armour_penetration = 30 @@ -626,20 +626,35 @@ sharpness = IS_SHARP hitsound = 'sound/weapons/bladeslice.ogg' var/datum/action/innate/cult/spear/spear_act + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/cult_spear/Initialize() +/obj/item/cult_spear/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/cult_spear/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 90) + AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="bloodspear1") + +/// triggered on wield of two handed item +/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE -/obj/item/twohanded/cult_spear/Destroy() +/obj/item/cult_spear/update_icon_state() + icon_state = "bloodspear0" + +/obj/item/cult_spear/Destroy() if(spear_act) qdel(spear_act) ..() -/obj/item/twohanded/cult_spear/update_icon_state() - icon_state = "bloodspear[wielded]" - -/obj/item/twohanded/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/turf/T = get_turf(hit_atom) if(isliving(hit_atom)) var/mob/living/L = hit_atom @@ -656,7 +671,7 @@ else ..() -/obj/item/twohanded/cult_spear/proc/break_spear(turf/T) +/obj/item/cult_spear/proc/break_spear(turf/T) if(src) if(!T) T = get_turf(src) @@ -667,7 +682,7 @@ playsound(T, 'sound/effects/glassbr3.ogg', 100) qdel(src) -/obj/item/twohanded/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(wielded) final_block_chance *= 2 if(prob(final_block_chance)) @@ -686,7 +701,7 @@ desc = "Call the blood spear back to your hand!" background_icon_state = "bg_demon" button_icon_state = "bloodspear" - var/obj/item/twohanded/cult_spear/spear + var/obj/item/cult_spear/spear var/cooldown = 0 /datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 61c727cf7d0..eee48826e86 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -507,12 +507,11 @@ structure_check() searches for nearby cultist structures required for the invoca if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - ..() + else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. + log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") else - if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. - log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") - ..() + ..() //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index 7f1d8b4f77f..8ca84d0775a 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -41,7 +41,6 @@ deathmessage = "screams in agony as it sublimates into a sulfurous smoke." deathsound = 'sound/magic/demon_dies.ogg' var/boost = 0 - bloodcrawl = BLOODCRAWL_EAT var/list/consumed_mobs = list() var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \ Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ @@ -49,6 +48,7 @@ /mob/living/simple_animal/imp/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") set_varspeed(1) addtimer(CALLBACK(src, /mob/living/simple_animal/proc/set_varspeed, 0), 30) diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index db65cc40a4d..9a875e3076c 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -16,7 +16,6 @@ pass_flags = 0 sight = (SEE_TURFS | SEE_OBJS) status_flags = CANPUSH - spacewalk = TRUE mob_size = MOB_SIZE_LARGE held_items = list(null, null) bodyparts = list(/obj/item/bodypart/chest/devil, /obj/item/bodypart/head/devil, /obj/item/bodypart/l_arm/devil, @@ -30,7 +29,8 @@ create_bodyparts() //initialize bodyparts create_internal_organs() grant_all_languages() - ..() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) /mob/living/carbon/true_devil/create_internal_organs() internal_organs += new /obj/item/organ/brain diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index 6562d28e44c..c3035064f11 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -12,6 +12,8 @@ var/list/name_source var/random_names = TRUE var/rip_and_tear = FALSE + var/equip_ert = TRUE + var/forge_objectives_for_ert = TRUE show_in_antagpanel = FALSE antag_moodlet = /datum/mood_event/focused can_hijack = HIJACK_PREVENT @@ -19,8 +21,10 @@ /datum/antagonist/ert/on_gain() if(random_names) update_name() - forge_objectives() - equipERT() + if(forge_objectives_for_ert) + forge_objectives() + if(equip_ert) + equipERT() . = ..() /datum/antagonist/ert/get_team() @@ -80,14 +84,14 @@ /datum/antagonist/ert/medic/inquisitor/on_gain() . = ..() - owner.isholy = TRUE + owner.holy_role = HOLY_ROLE_PRIEST /datum/antagonist/ert/security/inquisitor outfit = /datum/outfit/centcom/ert/security/inquisitor /datum/antagonist/ert/security/inquisitor/on_gain() . = ..() - owner.isholy = TRUE + owner.holy_role = HOLY_ROLE_PRIEST /datum/antagonist/ert/chaplain role = "Chaplain" @@ -98,14 +102,14 @@ /datum/antagonist/ert/chaplain/on_gain() . = ..() - owner.isholy = TRUE + owner.holy_role = HOLY_ROLE_PRIEST /datum/antagonist/ert/commander/inquisitor outfit = /datum/outfit/centcom/ert/commander/inquisitor /datum/antagonist/ert/commander/inquisitor/on_gain() . = ..() - owner.isholy = TRUE + owner.holy_role = HOLY_ROLE_PRIEST /datum/antagonist/ert/janitor role = "Janitor" @@ -173,6 +177,7 @@ return H.equipOutfit(outfit) + /datum/antagonist/ert/greet() if(!ert_team) return @@ -189,3 +194,101 @@ missiondesc += "
Your Mission : [ert_team.mission.explanation_text]" to_chat(owner,missiondesc) + + +/datum/antagonist/ert/families + name = "Space Police Responder" + antag_hud_type = ANTAG_HUD_SPACECOP + antag_hud_name = "hud_spacecop" + +/datum/antagonist/ert/families/apply_innate_effects(mob/living/mob_override) + ..() + var/mob/living/M = mob_override || owner.current + add_antag_hud(antag_hud_type, antag_hud_name, M) + + +/datum/antagonist/ert/families/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + remove_antag_hud(antag_hud_type, M) + ..() + +/datum/antagonist/ert/families/greet() + to_chat(owner, "You are the [name].") + to_chat(owner, "You are NOT a Nanotrasen Employee. You work for the local government.") + + var/missiondesc = "After an uptick in gang violence on [station_name()], you are responding to emergency calls from the station for immediate SSC Police assistance!\n" + missiondesc += "
Your Mission:" + missiondesc += "
1. Secure the situation and crack down on any gang activity. You can view gangsters with your sunglasses." + missiondesc += "
2. There is an undercover police officer on station. Secure him, receive his intel, and extract him safely." + missiondesc += "
3. Minimize civilian casualties, but defend yourself and civilians from hostile gangsters." + missiondesc += "
3. If Security is found to be violating the rights of citizens, detain them as per your authority as Spinward Stellar Coalition officers." + missiondesc += "
4. If the situation demands it, evacuate the station. Otherwise, remain on station and keep the peace." + to_chat(owner,missiondesc) + +/datum/antagonist/ert/families/undercover_cop + name = "Undercover Cop" + role = "Undercover Cop" + outfit = /datum/outfit/families_police/beatcop + var/free_clothes = list(/obj/item/clothing/glasses/hud/spacecop/hidden, + /obj/item/clothing/under/rank/security/officer/beatcop, + /obj/item/clothing/head/spacepolice) + forge_objectives_for_ert = FALSE + equip_ert = FALSE + random_names = FALSE + +/datum/antagonist/ert/families/undercover_cop/on_gain() + for(var/C in free_clothes) + var/obj/O = new C(owner.current) + var/list/slots = list ( + "backpack" = ITEM_SLOT_BACKPACK, + "left pocket" = ITEM_SLOT_LPOCKET, + "right pocket" = ITEM_SLOT_RPOCKET + ) + var/mob/living/carbon/human/H = owner.current + var/equipped = H.equip_in_one_of_slots(O, slots) + if(!equipped) + to_chat(owner.current, "Unfortunately, you could not bring your [O] to this shift. You will need to find one.") + qdel(O) + . = ..() + + +/datum/antagonist/ert/families/undercover_cop/greet() + to_chat(owner, "You are the [name].") + to_chat(owner, "You are NOT a Nanotrasen Employee. You work for the local government.") + + var/missiondesc = "You are an undercover police officer on board [station_name()]. You've been sent here by the Spinward Stellar Coalition because of suspected abusive behavior by the security department, and to keep tabs on a potential criminal organization operation." + missiondesc += "
Your Mission:" + missiondesc += "
1. Keep a close eye on any gangsters you spot. You can view gangsters using your sunglasses in your backpack." + missiondesc += "
2. Keep an eye on how Security handles any gangsters, and watch for excessive security brutality." + missiondesc += "
3. Remain undercover and do not get found out by Security or any gangs. Nanotrasen does not take kindly to being spied on." + missiondesc += "
4. When your backup arrives to extract you in 1 hour, inform them of everything you saw of note, and assist them in securing the situation." + to_chat(owner,missiondesc) + +/datum/antagonist/ert/families/beatcop + name = "Beat Cop" + role = "Police Officer" + outfit = /datum/outfit/families_police/beatcop + +/datum/antagonist/ert/families/beatcop/armored + name = "Armored Beat Cop" + role = "Police Officer" + outfit = /datum/outfit/families_police/beatcop/armored + +/datum/antagonist/ert/families/beatcop/swat + name = "S.W.A.T. Member" + role = "S.W.A.T. Officer" + outfit = /datum/outfit/families_police/beatcop/swat + +/datum/antagonist/ert/families/beatcop/fbi + name = "FBI Agent" + role = "FBI Agent" + outfit = /datum/outfit/families_police/beatcop/fbi + +/datum/antagonist/ert/families/beatcop/military + name = "Space Military" + role = "Sergeant" + outfit = /datum/outfit/families_police/beatcop/military + +/datum/antagonist/ert/families/beatcop/military/New() + . = ..() + name_source = GLOB.commando_names diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index 42d33ec0859..451741a25e9 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -2,7 +2,7 @@ name = "Prison Escapee" uniform = /obj/item/clothing/under/rank/prisoner shoes = /obj/item/clothing/shoes/sneakers/orange - r_pocket = /obj/item/kitchen/knife/carrotshiv + r_pocket = /obj/item/kitchen/knife/shiv /datum/outfit/prisoner/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE) if(visualsOnly) @@ -67,7 +67,7 @@ suit = /obj/item/clothing/suit/armor/vest/blueshirt belt = /obj/item/gun/ballistic/automatic/pistol/m1911 head = /obj/item/clothing/head/helmet/police - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat shoes = /obj/item/clothing/shoes/jackboots mask = /obj/item/clothing/mask/gas/sechailer/swat/spacepol glasses = /obj/item/clothing/glasses/sunglasses @@ -97,7 +97,7 @@ uniform = /obj/item/clothing/under/rank/prisoner head = /obj/item/clothing/head/hunter suit = /obj/item/clothing/suit/space/hunter - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat shoes = /obj/item/clothing/shoes/jackboots mask = /obj/item/clothing/mask/gas/hunter glasses = /obj/item/clothing/glasses/sunglasses/garb diff --git a/code/modules/antagonists/gang/gang.dm b/code/modules/antagonists/gang/gang.dm new file mode 100644 index 00000000000..1d87aae8ee1 --- /dev/null +++ b/code/modules/antagonists/gang/gang.dm @@ -0,0 +1,429 @@ +/datum/antagonist/gang + name = "Family Member" + roundend_category = "gangsters" + var/gang_name = "Leet Like Jeff K" + var/gang_id = "LLJK" + var/datum/team/gang/my_gang + var/list/acceptable_clothes = list() + var/list/free_clothes = list() + var/datum/action/cooldown/spawn_induction_package/package_spawner = new() + var/gang_objective = "Be super cool and stuff." + var/starter_gangster = FALSE + antag_hud_type = ANTAG_HUD_GANGSTER + antag_hud_name = "hud_gangster" + +/datum/antagonist/gang/apply_innate_effects(mob/living/mob_override) + ..() + package_spawner.Grant(owner.current) + package_spawner.my_gang_datum = src + var/mob/living/M = mob_override || owner.current + add_antag_hud(antag_hud_type, antag_hud_name, M) + + +/datum/antagonist/gang/remove_innate_effects(mob/living/mob_override) + package_spawner.Remove(owner.current) + var/mob/living/M = mob_override || owner.current + remove_antag_hud(antag_hud_type, M) + ..() + + +/datum/antagonist/gang/get_team() + return my_gang + +/datum/antagonist/gang/proc/add_gang_points(var/points_to_add) + if(my_gang) + my_gang.adjust_points(points_to_add) + +/datum/antagonist/gang/proc/check_gang_objective() // used to determine if a gang has completed their special objective + return TRUE + +/datum/antagonist/gang/greet() + to_chat(owner.current, "[gang_name] for life!") + to_chat(owner.current, "You're a member of the [gang_name] now!
Tag turf with a spraycan, wear your group's colors, and recruit more gangsters with the Induction Packages!
") + to_chat(owner.current, "Don't fuck with non-gangsters unless they fuck with you first.") + to_chat(owner.current, "Don't blow shit up or make the station uninhabitable.") + to_chat(owner.current, "Family's Objective: [gang_objective]") + +/datum/antagonist/gang/red + name = "San Fierro Triad" + roundend_category = "The San Fierro Triad gangsters" + gang_name = "San Fierro Triad" + gang_id = "SFT" + acceptable_clothes = list(/obj/item/clothing/head/soft/red, + /obj/item/clothing/neck/scarf/red, + /obj/item/clothing/suit/jacket/letterman_red, + /obj/item/clothing/under/color/red, + /obj/item/clothing/mask/bandana/red, + /obj/item/clothing/under/suit/red) + free_clothes = list(/obj/item/clothing/suit/jacket/letterman_red, + /obj/item/clothing/under/color/red, + /obj/item/toy/crayon/spraycan) + gang_objective = "The Spinward Stellar Coalition police intend to interfere with our operations, by sending undercover cops. Find them and eliminate them all." + antag_hud_name = "Triad" + +/datum/antagonist/gang/red/check_gang_objective() + var/datum/game_mode/gang/F = SSticker.mode + for(var/datum/mind/M in F.undercover_cops) + var/mob/living/carbon/human/H = M.current + if(considered_alive(H)) + return FALSE + return TRUE + +/datum/antagonist/gang/purple + name = "Ballas" + roundend_category = "The Ballas gangsters" + gang_name = "Ballas" + gang_id = "B" + acceptable_clothes = list(/obj/item/clothing/head/soft/purple, + /obj/item/clothing/under/color/lightpurple, + /obj/item/clothing/neck/scarf/purple, + /obj/item/clothing/head/beanie/purple, + /obj/item/clothing/suit/apron/purple_bartender, + /obj/item/clothing/mask/bandana/skull, + /obj/item/clothing/under/suit/green) + free_clothes = list(/obj/item/clothing/head/beanie/purple, + /obj/item/clothing/under/color/lightpurple, + /obj/item/toy/crayon/spraycan) + var/list/cop_roles = list("Security Officer", "Warden", "Detective", "Head of Security") + gang_objective = "We're looking to make a deal with the security pigs on this station after the shift. We scratch their back, they scratch ours. You feel me? Keep all of security safe from any trouble, and make sure they get out alive." + antag_hud_name = "Ballas" + +/datum/antagonist/gang/purple/check_gang_objective() + for(var/mob/M in GLOB.player_list) + if(M.mind.assigned_role in cop_roles) + if(!considered_alive(M) && !M.suiciding) + return FALSE + return TRUE + +/datum/antagonist/gang/green + name = "Grove Street Families" + roundend_category = "The Grove Street Families gangsters" + gang_name = "Grove Street Families" + gang_id = "GSF" + acceptable_clothes = list(/obj/item/clothing/head/soft/green, + /obj/item/clothing/under/color/darkgreen, + /obj/item/clothing/neck/scarf/green, + /obj/item/clothing/head/beanie/green, + /obj/item/clothing/suit/poncho/green, + /obj/item/clothing/mask/bandana/green) + free_clothes = list(/obj/item/clothing/mask/bandana/green, + /obj/item/clothing/under/color/darkgreen, + /obj/item/toy/crayon/spraycan) + gang_objective = "We lost a lot of territory recently. We gotta get that shit back. Make sure 45 rooms are tagged for Grove Street." + antag_hud_name = "Grove" +/datum/antagonist/gang/green/check_gang_objective() + var/tag_amount = 0 + for(var/T in GLOB.gang_tags) + var/obj/effect/decal/cleanable/crayon/gang/tag = T + if(tag.my_gang.gang_id == gang_id) + tag_amount++ + if(tag_amount >= 45) + return TRUE + return FALSE + + +/datum/antagonist/gang/russian_mafia + name = "Russian Mafia" + roundend_category = "The Russian mafiosos" + gang_name = "Russian Mafia" + gang_id = "RM" + acceptable_clothes = list(/obj/item/clothing/head/soft/red, + /obj/item/clothing/neck/scarf/red, + /obj/item/clothing/under/suit/white, + /obj/item/clothing/head/beanie/red, + /obj/item/clothing/head/ushanka) + free_clothes = list(/obj/item/clothing/head/ushanka, + /obj/item/clothing/under/suit/white, + /obj/item/toy/crayon/spraycan) + gang_objective = "We are starting to run low on supplies at the home base, my friend. Make sure every comrade has a bottle of some kind of booze on them, friend." + antag_hud_name = "Russian" + +/datum/antagonist/gang/russian_mafia/check_gang_objective() + var/datum/game_mode/gang/F = SSticker.mode + for(var/M in F.gangbangers) + var/datum/mind/MI = M + if(MI.has_antag_datum(src.type)) + if(!considered_alive(MI.current)) + continue // dead people cant really do the objective lol + var/list/items_to_check = MI.current.GetAllContents() + for(var/I in items_to_check) + var/obj/IT = I + if(istype(IT, /obj/item/reagent_containers/food/drinks/bottle)) + continue + return FALSE // didnt pass the bottle check, no point in continuing to loop + return TRUE + + +/datum/antagonist/gang/italian_mob + name = "Italian Mob" + roundend_category = "The Italian mobsters" + gang_name = "Italian Mob" + gang_id = "IM" + acceptable_clothes = list(/obj/item/clothing/under/suit/checkered, + /obj/item/clothing/head/fedora, + /obj/item/clothing/neck/scarf/green, + /obj/item/clothing/mask/bandana/green) + free_clothes = list(/obj/item/clothing/head/fedora, + /obj/item/clothing/under/suit/checkered, + /obj/item/toy/crayon/spraycan) + gang_objective = "The boss wants it made very clear that all our esteemed members are to be held with respect. If a friend falls, ensure they are properly buried with a coffin. And keep any Chaplains alive, to ensure the corpses are properly taken care of." + antag_hud_name = "Italian" + +/datum/antagonist/gang/italian_mob/check_gang_objective() + var/datum/game_mode/gang/F = SSticker.mode + for(var/M in F.gangbangers) + var/datum/mind/MI = M + if(MI.has_antag_datum(src.type)) + if(considered_alive(MI.current)) + continue + if(istype(MI.current.loc, /obj/structure/closet/crate/coffin)) + continue + return FALSE + for(var/mob/M in GLOB.player_list) + if(M.mind.assigned_role == "Chaplain") + if(!considered_alive(M) && !M.suiciding) + return FALSE + return TRUE + +/datum/antagonist/gang/tunnel_snakes + name = "Tunnel Snakes" + roundend_category = "The Tunnel Snakes" + gang_name = "Tunnel Snakes" + gang_id = "TS" + acceptable_clothes = list(/obj/item/clothing/under/pants/classicjeans, + /obj/item/clothing/suit/jacket, + /obj/item/clothing/mask/bandana/skull) + free_clothes = list(/obj/item/clothing/suit/jacket, + /obj/item/clothing/under/pants/classicjeans, + /obj/item/toy/crayon/spraycan) + gang_objective = "TUNNEL SNAKES RULE!!! Make sure that everyone knows that, by getting 25% of people on station to wear any part of our uniform! TUNNEL SNAKES RULE!!!" + antag_hud_name = "Snakes" + +/datum/antagonist/gang/tunnel_snakes/check_gang_objective() + var/people_on_station = 0 + var/people_reppin_tunnel_snakes = 0 + for(var/mob/M in GLOB.player_list) + if(!considered_alive(M)) + continue + if(ishuman(M)) + var/mob/living/carbon/human/H = M + people_on_station++ + for(var/clothing in list(H.head, H.wear_mask, H.wear_suit, H.w_uniform, H.back, H.gloves, H.shoes, H.belt, H.s_store, H.glasses, H.ears, H.wear_id)) + if(is_type_in_list(clothing, acceptable_clothes)) + people_reppin_tunnel_snakes++ + if(0.25*people_on_station > people_reppin_tunnel_snakes) + return FALSE + return TRUE + +/datum/antagonist/gang/vagos + name = "Los Santos Vagos" + roundend_category = "The Los Santos Vagos gangsters" + gang_name = "Los Santos Vagos" + gang_id = "LSV" + acceptable_clothes = list(/obj/item/clothing/head/soft/yellow, + /obj/item/clothing/under/color/yellow, + /obj/item/clothing/neck/scarf/yellow, + /obj/item/clothing/head/beanie/yellow, + /obj/item/clothing/mask/bandana/gold) + free_clothes = list(/obj/item/clothing/mask/bandana/gold, + /obj/item/clothing/under/color/yellow, + /obj/item/toy/crayon/spraycan) + gang_objective = "Orders from up high. We need to up our drug operation. Ensure that at least 25% of the station is addicted to meth." + antag_hud_name = "Vagos" + + +/datum/antagonist/gang/vagos/check_gang_objective() + var/people_on_station = 0 + var/people_on_crack = 0 + for(var/mob/M in GLOB.player_list) + if(!considered_alive(M)) + continue + if(ishuman(M)) + var/mob/living/carbon/human/H = M + people_on_station++ + for(var/R in H.reagents.addiction_list) + if(istype(R, /datum/reagent/drug/methamphetamine)) + people_on_crack++ + if(0.25*people_on_station > people_on_crack) + return FALSE + return TRUE + + +/datum/antagonist/gang/henchmen + name = "Monarch Crew" + roundend_category = "The Monarch henchmen" + gang_name = "Monarch Crew" + gang_id = "HENCH" + acceptable_clothes = list(/obj/item/clothing/head/soft/yellow, + /obj/item/clothing/under/suit/henchmen, + /obj/item/clothing/neck/scarf/yellow, + /obj/item/clothing/head/beanie/yellow, + /obj/item/clothing/mask/bandana/gold, + /obj/item/storage/backpack/henchmen) + free_clothes = list(/obj/item/storage/backpack/henchmen, + /obj/item/clothing/under/suit/henchmen, + /obj/item/toy/crayon/spraycan) + gang_objective = "I have it on VERY GOOD AUTHORITY that the Research Director on this station helped Venture on a science project back in college! ENSURE THAT HE DOES NOT LEAVE THIS STATION ALIVE, HENCHMEN! THE MIGHTY MONARCH DEMANDS IT!!!" + antag_hud_name = "Monarch" + +/datum/antagonist/gang/henchmen/check_gang_objective() // gotta arch dr. venture indirectly + for(var/mob/M in GLOB.player_list) + if(M.mind.assigned_role == "Research Director") + if(considered_alive(M)) + return FALSE + return TRUE + +/datum/antagonist/gang/yakuza + name = "Tojo Clan" + roundend_category = "The Yakuza" + gang_name = "Tojo Clan" + gang_id = "YAK" + acceptable_clothes = list(/obj/item/clothing/head/soft/yellow, + /obj/item/clothing/under/costume/yakuza, + /obj/item/clothing/shoes/yakuza, + /obj/item/clothing/neck/scarf/yellow, + /obj/item/clothing/head/beanie/yellow, + /obj/item/clothing/mask/bandana/gold, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/suit/yakuza) + free_clothes = list(/obj/item/clothing/under/costume/yakuza, + /obj/item/clothing/shoes/yakuza, + /obj/item/clothing/suit/yakuza, + /obj/item/clothing/head/hardhat, + /obj/item/toy/crayon/spraycan) + gang_objective = "The boss is thrilled about this new construction opportunity we've all been given, yadda yadda, look, he knows we're here to expand our business ventures for the clan, but Majima wanted it made VERY clear that we do NOT fuck this station's infrastructure up. If more than 15% of this station is busted when we get the hell out of here, it's your ass on the line." + antag_hud_name = "Tojo" + +/datum/antagonist/gang/yakuza/check_gang_objective() + var/datum/station_state/current_state = new /datum/station_state() + current_state.count() + var/station_integrity = min(PERCENT(GLOB.start_state.score(current_state)), 100) + if(station_integrity < 85) + return FALSE + return TRUE + +/datum/antagonist/gang/jackbros + name = "Jack Bros" + roundend_category = "The Hee-hos" + gang_name = "Jack Bros" + gang_id = "JB" + acceptable_clothes = list(/obj/item/clothing/head/soft/blue, + /obj/item/clothing/under/costume/jackbros, + /obj/item/clothing/shoes/jackbros, + /obj/item/clothing/head/jackbros, + /obj/item/clothing/mask/bandana/blue) + free_clothes = list(/obj/item/clothing/under/costume/jackbros, + /obj/item/clothing/shoes/jackbros, + /obj/item/clothing/head/jackbros, + /obj/item/toy/crayon/spraycan) + gang_objective = "Hee-hello friends! We need to expand our influence, ho! Get a King Frost in as the Captain of this joint! Either get the original Captain on board with the program, or Hee-ho a fellow Jack Frost into the position yourselves!" + antag_hud_name = "JackFrost" + +/datum/antagonist/gang/jackbros/check_gang_objective() + var/datum/game_mode/gang/F = SSticker.mode + for(var/M in F.gangbangers) + var/datum/mind/MI = M + if(MI.has_antag_datum(src.type)) + if(!considered_alive(MI.current)) + continue // dead people cant really do the objective lol + if(ishuman(MI.current)) + var/mob/living/carbon/human/H = MI.current + if(H.get_assignment() == "Captain") + return TRUE + return FALSE + + +/datum/antagonist/gang/dutch + name = "Dutch van der Linde's Gang" + roundend_category = "Dutch's outlaws" + gang_name = "Dutch van der Linde's Gang" + gang_id = "VDL" + acceptable_clothes = list(/obj/item/clothing/head/soft/black, + /obj/item/clothing/under/costume/dutch, + /obj/item/clothing/suit/dutch, + /obj/item/clothing/head/bowler, + /obj/item/clothing/mask/bandana/black) + free_clothes = list(/obj/item/clothing/under/costume/dutch, + /obj/item/clothing/head/bowler, + /obj/item/clothing/suit/dutch, + /obj/item/toy/crayon/spraycan) + gang_objective = "Listen here, fellas. I have a plan. Just one more score on this crappy little po-dunk station. Gold bars, friends. Get all the gold out of the silos, and leave nothing behind! Spread the gold amongst yourselves for the escape plan, make sure everyone has at least 1 bar. After this, it'll be space mangos at Tahiti. You just gotta have a little faith." + antag_hud_name = "Dutch" + +/datum/antagonist/gang/dutch/check_gang_objective() + var/datum/game_mode/gang/F = SSticker.mode + for(var/M in F.gangbangers) + var/datum/mind/MI = M + if(MI.has_antag_datum(src.type)) + if(!considered_alive(MI.current)) + continue // dead people cant really do the objective lol + var/list/items_to_check = MI.current.GetAllContents() + for(var/I in items_to_check) + var/obj/IT = I + if(istype(IT, /obj/item/stack/sheet/mineral/gold)) + continue + return FALSE // didnt pass the bar check, no point in continuing to loop + var/obj/machinery/ore_silo/S = GLOB.ore_silo_default + var/datum/component/material_container/mat_container = S.GetComponent(/datum/component/material_container) + if(mat_container.materials[SSmaterials.GetMaterialRef(/datum/material/gold)] >= 2000) // if theres at least 1 bar of gold left in the silo, they've failed to heist all of it + return FALSE + return TRUE + + +/datum/team/gang + var/points = 0 + var/gang_id = "LLJK" + var/list/acceptable_clothes = list() + var/list/free_clothes = list() + var/datum/antagonist/gang/my_gang_datum + +/datum/team/gang/proc/adjust_points(var/points_to_adjust) + points += points_to_adjust + +/datum/team/gang/roundend_report() + return + +/datum/action/cooldown/spawn_induction_package + name = "Create Induction Package" + desc = "Generate an induction package for your family." + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "recruit" + icon_icon = 'icons/obj/gang/actions.dmi' + cooldown_time = 300 + var/datum/antagonist/gang/my_gang_datum + +/datum/action/cooldown/spawn_induction_package/Trigger() + if(!..()) + return FALSE + if(!IsAvailable()) + return FALSE + if(!my_gang_datum) + return FALSE + if(!istype(owner, /mob/living/carbon/human)) + return FALSE + var/mob/living/carbon/human/H = owner + if(H.stat) + return FALSE + + var/datum/game_mode/gang/mode = SSticker.mode + var/lowest_gang_count = my_gang_datum.my_gang.members.len + for(var/datum/team/gang/TT in mode.gangs) + var/alive_gangsters = 0 + for(var/datum/mind/gangers in TT.members) + if(ishuman(gangers.current) && gangers.current.client && !gangers.current.stat) + alive_gangsters++ + if(!alive_gangsters || TT.members.len <= 1) // Dead or inactive gangs don't count towards the cap. + continue + if(TT != my_gang_datum.my_gang) + if(alive_gangsters < lowest_gang_count) + lowest_gang_count = alive_gangsters + if(my_gang_datum.my_gang.members.len >= (lowest_gang_count + mode.gang_balance_cap)) + to_chat(H, "Your gang is pretty packed right now. You don't need more members just yet. If the other families expand, you can recruit more members.") + return FALSE + to_chat(H, "You pull an induction package from your pockets and place it on the ground.") + var/obj/item/gang_induction_package/GP = new(get_turf(H)) + GP.name = "\improper [my_gang_datum.name] signup package" + GP.gang_to_use = my_gang_datum.type + GP.team_to_use = my_gang_datum.my_gang + StartCooldown() + return TRUE diff --git a/code/modules/antagonists/gang/outfits.dm b/code/modules/antagonists/gang/outfits.dm new file mode 100644 index 00000000000..9a58a386cda --- /dev/null +++ b/code/modules/antagonists/gang/outfits.dm @@ -0,0 +1,83 @@ +/datum/outfit/families_police/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + if(visualsOnly) + return + + var/obj/item/card/id/W = H.wear_id + W.access = get_all_accesses() // I have a warrant. + W.assignment = "Space Police" + W.registered_name = H.real_name + W.update_label() + ..() + +/datum/outfit/families_police/beatcop + name = "Families: Beat Cop" + + uniform = /obj/item/clothing/under/rank/security/officer/beatcop + back = /obj/item/storage/backpack/duffelbag/cops + suit = null + shoes = /obj/item/clothing/shoes/combat/swat + gloves = null + glasses = /obj/item/clothing/glasses/hud/spacecop + ears = /obj/item/radio/headset/headset_sec + mask = null + head = /obj/item/clothing/head/spacepolice + belt = /obj/item/gun/ballistic/automatic/pistol/m1911 + r_pocket = /obj/item/lighter + l_pocket = /obj/item/restraints/handcuffs + back = /obj/item/storage/backpack/satchel/leather + id = /obj/item/card/id + backpack_contents = list(/obj/item/storage/box/handcuffs = 1, + /obj/item/storage/box/teargas = 1, + /obj/item/storage/box/flashbangs = 1, + /obj/item/shield/riot/tele = 1, + /obj/item/ammo_box/magazine/m45 = 3, + /obj/item/ammo_box/c45 = 2) + + +/datum/outfit/families_police/beatcop/armored + name = "Families: Armored Beat Cop" + suit = /obj/item/clothing/suit/armor/vest/blueshirt + head = /obj/item/clothing/head/helmet/blueshirt + belt = /obj/item/gun/ballistic/shotgun/automatic/combat + backpack_contents = list(/obj/item/storage/box/handcuffs = 1, + /obj/item/storage/box/teargas = 1, + /obj/item/storage/box/flashbangs = 1, + /obj/item/shield/riot/tele = 1, + /obj/item/storage/box/lethalshot = 2) + +/datum/outfit/families_police/beatcop/swat + name = "Families: SWAT Beat Cop" + suit = /obj/item/clothing/suit/armor/riot + head = /obj/item/clothing/head/helmet/riot + gloves = /obj/item/clothing/gloves/combat + belt = /obj/item/gun/ballistic/shotgun/automatic/combat + backpack_contents = list(/obj/item/storage/box/handcuffs = 1, + /obj/item/storage/box/teargas = 1, + /obj/item/storage/box/flashbangs = 1, + /obj/item/shield/riot/tele = 1, + /obj/item/storage/box/lethalshot = 2) + +/datum/outfit/families_police/beatcop/fbi + name = "Families: Space FBI Officer" + suit = /obj/item/clothing/suit/armor/laserproof + head = /obj/item/clothing/head/helmet/riot + belt = /obj/item/gun/ballistic/automatic/proto/unrestricted + gloves = /obj/item/clothing/gloves/combat + backpack_contents = list(/obj/item/storage/box/handcuffs = 1, + /obj/item/storage/box/teargas = 1, + /obj/item/storage/box/flashbangs = 1, + /obj/item/shield/riot/tele = 1, + /obj/item/ammo_box/magazine/smgm9mm = 3, + /obj/item/ammo_box/c9mm = 2) + +/datum/outfit/families_police/beatcop/military + name = "Families: Space Military" + uniform = /obj/item/clothing/under/syndicate/camo + suit = /obj/item/clothing/suit/armor/laserproof + head = /obj/item/clothing/head/beret/durathread + belt = /obj/item/gun/energy/laser/scatter + gloves = /obj/item/clothing/gloves/combat + backpack_contents = list(/obj/item/storage/box/handcuffs = 1, + /obj/item/storage/box/teargas = 1, + /obj/item/storage/box/flashbangs = 1, + /obj/item/shield/riot/tele = 1) diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 43658de5132..ffdba705342 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -131,6 +131,7 @@ form = null alpha = initial(alpha) color = initial(color) + desc = initial(desc) animate_movement = SLIDE_STEPS maptext = null diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 8f82d8b7808..c2dcbf3f0fb 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -700,7 +700,7 @@ This is here to make the tiles around the station mininuke change when it's arme /obj/item/disk/nuclear/proc/manual_suicide(mob/living/user) user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) - user.visible_message("[user] was destroyed by the nuclear blast!") + user.visible_message("[user] is destroyed by the nuclear blast!") user.adjustOxyLoss(200) user.death(0) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 01c49aaf7b5..7d9ce5900e8 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -23,7 +23,6 @@ maxHealth = INFINITY layer = GHOST_LAYER healable = FALSE - spacewalk = TRUE sight = SEE_SELF throwforce = 0 @@ -73,6 +72,7 @@ /mob/living/simple_animal/revenant/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index 4758e6d0d4e..bfdab56924b 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -115,7 +115,7 @@ /datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/handheld/flash = locate() in L if (!flash) to_chat(admin, "Deleting flash failed!") return @@ -136,7 +136,7 @@ /datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/handheld/flash = locate() in L if (!flash) to_chat(admin, "Repairing flash failed!") else @@ -240,7 +240,7 @@ return if(give_flash) - var/obj/item/assembly/flash/T = new(C) + var/obj/item/assembly/flash/handheld/T = new(C) var/list/slots = list ( "backpack" = ITEM_SLOT_BACKPACK, "left pocket" = ITEM_SLOT_LPOCKET, diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 8cb12cb897a..42b08ae29c6 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -38,7 +38,6 @@ melee_damage_upper = 30 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - bloodcrawl = BLOODCRAWL_EAT var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \ Pulling a dead or unconscious mob while you enter a pool will pull them in with you, allowing you to feast and regain your health. \ @@ -52,6 +51,7 @@ /mob/living/simple_animal/slaughter/Initialize() ..() + ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new AddSpell(bloodspell) if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) @@ -67,9 +67,8 @@ /mob/living/simple_animal/slaughter/phasein() . = ..() - add_movespeed_modifier(MOVESPEED_ID_SLAUGHTER, update=TRUE, priority=100, multiplicative_slowdown=-1) - addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, MOVESPEED_ID_SLAUGHTER, TRUE), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) - + add_movespeed_modifier(/datum/movespeed_modifier/slaughter) + addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) //The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl /obj/item/organ/heart/demon diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm index 1f44b67b0e6..6422f60b2ff 100644 --- a/code/modules/antagonists/space_dragon/space_dragon.dm +++ b/code/modules/antagonists/space_dragon/space_dragon.dm @@ -1,31 +1,51 @@ /datum/antagonist/space_dragon name = "Space Dragon" - show_in_antagpanel = FALSE + roundend_category = "space dragons" + antagpanel_category = "Space Dragon" + job_rank = ROLE_SPACE_DRAGON + show_in_antagpanel = TRUE show_name_in_check_antagonists = TRUE + var/list/datum/mind/carp = list() /datum/antagonist/space_dragon/greet() - to_chat(owner, "I am Space Dragon, ex-space carp, and defender of the secrets of constellation, Draco.\n\ - Fabulous secret powers were revealed to me the day I held aloft a wizard's staff of change and said 'By the power of Draco, I have the power!'\n\ - The wizard was turned into the short-lived Pastry Cat while I became Space Dragon, the most powerful beast in the universe.\n\ - Clicking a tile will shoot fire onto that tile.\n\ - Using Tail Sweep will let me get the better of those who come too close.\n\ - Attacking dead bodies will allow me to gib them to restore health.\n\ - From the wizard's writings, he had been studying this station and its hierarchy. From this, I know who leads the station, and will kill them so the station underlings see me as their new leader.") + to_chat(owner, "Endless time and space we have moved through. We do not remember from where we came, we do not know where we will go. All space belongs to us.\n\ + Space is an empty void, of which our kind is the apex predator, and there was little to rival our claim to this title.\n\ + But now, we find intruders spread out amongst our claim, willing to fight our teeth with magics unimaginable, their dens like lights flicking in the depths of space.\n\ + Today, we will snuff out one of those lights.") + to_chat(owner, "You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came.") owner.announce_objectives() SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg')) /datum/antagonist/space_dragon/proc/forge_objectives() - var/current_heads = SSjob.get_all_heads() - var/datum/objective/assassinate/killchosen = new - killchosen.owner = owner - var/datum/mind/selected = pick(current_heads) - killchosen.target = selected - killchosen.update_explanation_text() - objectives += killchosen - var/datum/objective/survive/survival = new - survival.owner = owner - objectives += survival + var/datum/objective/summon_carp/summon = new() + summon.dragon = src + objectives += summon /datum/antagonist/space_dragon/on_gain() forge_objectives() . = ..() + +/datum/objective/summon_carp + var/datum/antagonist/space_dragon/dragon + explanation_text = "Summon and protect the rifts to flood the station with carp." + +/datum/antagonist/space_dragon/roundend_report() + var/list/parts = list() + var/datum/objective/summon_carp/S = locate() in objectives + if(S.check_completion()) + parts += "The [name] has succeeded! Station space has been reclaimed by the space carp!" + parts += printplayer(owner) + var/objectives_complete = TRUE + if(objectives.len) + parts += printobjectives(objectives) + for(var/datum/objective/objective in objectives) + if(!objective.check_completion()) + objectives_complete = FALSE + break + if(objectives_complete) + parts += "The [name] was successful!" + else + parts += "The [name] has failed!" + parts += "The [name] was assisted by:" + parts += printplayerlist(carp) + return "
[parts.Join("
")]
" diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 57cc37c0fef..4d406c3a782 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -34,9 +34,8 @@ if(traitor_kind == TRAITOR_AI && owner.current && isAI(owner.current)) var/mob/living/silicon/ai/A = owner.current A.set_zeroth_law("") - A.verbs -= /mob/living/silicon/ai/proc/choose_modules - A.malf_picker.remove_malf_verbs(A) - qdel(A.malf_picker) + A.remove_malf_abilities() + QDEL_NULL(A.malf_picker) SSticker.mode.traitors -= owner if(!silent && owner.current) to_chat(owner.current,"You are no longer the [special_role]!") diff --git a/code/modules/antagonists/traitor/equipment/module_picker.dm b/code/modules/antagonists/traitor/equipment/module_picker.dm index e1fb352af38..738bf46aab2 100644 --- a/code/modules/antagonists/traitor/equipment/module_picker.dm +++ b/code/modules/antagonists/traitor/equipment/module_picker.dm @@ -11,13 +11,6 @@ /datum/module_picker/New() possible_modules = get_malf_modules() -/// Removes all malfunction-related abilities from the target AI. -/datum/module_picker/proc/remove_malf_verbs(mob/living/silicon/ai/AI) - for(var/datum/AI_Module/AM in possible_modules) - for(var/datum/action/A in AI.actions) - if(istype(A, initial(AM.power_type))) - qdel(A) - /proc/cmp_malfmodules_priority(datum/AI_Module/A, datum/AI_Module/B) return B.cost - A.cost @@ -130,3 +123,4 @@ action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining." action.UpdateButtonIcon() processing_time -= AM.cost + SSblackbox.record_feedback("nested tally", "malfunction_modules_bought", 1, list("[initial(AM.name)]", "[AM.cost]")) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 3e6829f4fcb..3aeaad2c098 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -268,7 +268,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), ITEM_SLOT_BACK) + H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) /obj/item/voodoo diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 36e59858c45..4af8dd16466 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -152,7 +152,7 @@ /datum/spellbook_entry/blind name = "Blind" - spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind + spell_type = /obj/effect/proc_holder/spell/pointed/trigger/blind cost = 1 /datum/spellbook_entry/mindswap @@ -371,8 +371,9 @@ /datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) . = ..() if(.) + new /obj/item/tank/internals/oxygen(get_turf(user)) //i need to BREATHE new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. - new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit + new /obj/item/clothing/gloves/combat/wizard(get_turf(user))//To complete the outfit /datum/spellbook_entry/item/contract name = "Contract of Apprenticeship" @@ -416,12 +417,12 @@ /datum/spellbook_entry/item/mjolnir name = "Mjolnir" desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." - item_path = /obj/item/twohanded/mjollnir + item_path = /obj/item/mjollnir /datum/spellbook_entry/item/singularity_hammer name = "Singularity Hammer" desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." - item_path = /obj/item/twohanded/singularityhammer + item_path = /obj/item/singularityhammer /datum/spellbook_entry/item/battlemage name = "Battlemage Armour" @@ -430,6 +431,12 @@ limit = 1 category = "Defensive" +/datum/spellbook_entry/item/battlemage/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . = ..() + if(.) + new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. + new /obj/item/clothing/gloves/combat/wizard(get_turf(user))//To complete the outfit + /datum/spellbook_entry/item/battlemage_charge name = "Battlemage Armour Charges" desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour." diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index eb31d9faf27..34d193bc198 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -67,6 +67,7 @@ master.update_icon() /obj/item/assembly_holder/Crossed(atom/movable/AM as mob|obj) + . = ..() if(a_left) a_left.Crossed(AM) if(a_right) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 8099d18fb93..4cbd667f600 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -189,7 +189,7 @@ return UI_CLOSE /obj/item/assembly/infra/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "infrared_emitter", name, ui_x, ui_y, master_ui, state) @@ -228,6 +228,7 @@ var/obj/item/assembly/infra/master /obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) + . = ..() if(istype(AM, /obj/effect/beam)) return if (isitem(AM)) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index b9684f73fd5..2bc4c3e19fc 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -116,7 +116,7 @@ return UI_CLOSE /obj/item/assembly/prox_sensor/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "proximity_sensor", name, ui_x, ui_y, master_ui, state) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index d67c8a85bf9..7da4fb7bbc9 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -70,7 +70,7 @@ return UI_CLOSE /obj/item/assembly/signaler/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "signaler", name, ui_x, ui_y, master_ui, state) diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index c43fb260aad..6dda7ff00e0 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -91,7 +91,7 @@ return UI_CLOSE /obj/item/assembly/timer/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) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "timer", name, ui_x, ui_y, master_ui, state) diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index c363030c465..1b67d2b9565 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -154,12 +154,22 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g moles_visible = MOLES_GAS_VISIBLE * 60 rarity = 250 +/datum/gas/freon + id = "freon" + specific_heat = 300 + name = "Freon" + gas_overlay = "freon" + moles_visible = MOLES_GAS_VISIBLE *30 + fusion_power = -5 + rarity = 10 + /obj/effect/overlay/gas icon = 'icons/effects/atmospherics.dmi' mouse_opacity = MOUSE_OPACITY_TRANSPARENT anchored = TRUE // should only appear in vis_contents, but to be safe layer = FLY_LAYER appearance_flags = TILE_BOUND + vis_flags = NONE /obj/effect/overlay/gas/New(state, alph) . = ..() diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index e33ae714172..7626deff5ec 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -238,6 +238,59 @@ return cached_results["fire"] ? REACTING : NO_REACTION +//freon reaction (is not a fire yet) +datum/gas_reaction/freonfire + priority = -3 + name = "Freon combustion" + id = "freonfire" + +datum/gas_reaction/freonfire/init_reqs() + min_requirements = list( + /datum/gas/oxygen = MINIMUM_MOLE_COUNT, + /datum/gas/freon = MINIMUM_MOLE_COUNT + ) + +datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder) + var/energy_released = 0 + var/old_heat_capacity = air.heat_capacity() + var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow + var/temperature = air.temperature + var/turf/open/location = isturf(holder) ? holder : null + + //Handle freon burning (only reaction now) + var/freon_burn_rate = 0 + var/oxygen_burn_rate = 0 + //more freon released at lower temperatures + var/temperature_scale = 1 + + if(temperature < FREON_LOWER_TEMPERATURE) //stop the reaction when too cold + temperature_scale = 0 + else + temperature_scale = (FREON_MAXIMUM_BURN_TEMPERATURE - temperature)/(FREON_MAXIMUM_BURN_TEMPERATURE - FREON_LOWER_TEMPERATURE) //calculate the scale based on the temperature + if(temperature_scale > 0) + oxygen_burn_rate = OXYGEN_BURN_RATE_BASE - temperature_scale + if(cached_gases[/datum/gas/oxygen][MOLES] > cached_gases[/datum/gas/freon][MOLES]*FREON_OXYGEN_FULLBURN) + freon_burn_rate = (cached_gases[/datum/gas/freon][MOLES]*temperature_scale)/FREON_BURN_RATE_DELTA + else + freon_burn_rate = (temperature_scale*(cached_gases[/datum/gas/oxygen][MOLES]/FREON_OXYGEN_FULLBURN))/FREON_BURN_RATE_DELTA + + if(freon_burn_rate > MINIMUM_HEAT_CAPACITY) + freon_burn_rate = min(freon_burn_rate,cached_gases[/datum/gas/freon][MOLES],cached_gases[/datum/gas/oxygen][MOLES]/oxygen_burn_rate) //Ensures matter is conserved properly + cached_gases[/datum/gas/freon][MOLES] = QUANTIZE(cached_gases[/datum/gas/freon][MOLES] - freon_burn_rate) + cached_gases[/datum/gas/oxygen][MOLES] = QUANTIZE(cached_gases[/datum/gas/oxygen][MOLES] - (freon_burn_rate * oxygen_burn_rate)) + ASSERT_GAS(/datum/gas/carbon_dioxide,air) + cached_gases[/datum/gas/carbon_dioxide][MOLES] += freon_burn_rate + + if(temperature < 150 && temperature > 130 && prob(2)) + new /obj/item/stack/sheet/hot_ice(location) + + energy_released += FIRE_FREON_ENERGY_RELEASED * (freon_burn_rate) + + if(energy_released < 0) + var/new_heat_capacity = air.heat_capacity() + if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) + air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity + //fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again! //Fusion Rework Counter: Please increment this if you make a major overhaul to this system again. //6 reworks @@ -395,6 +448,39 @@ air.temperature = max(((temperature*old_heat_capacity + energy_released)/new_heat_capacity),TCMB) return REACTING +/datum/gas_reaction/freonformation + priority = 5 + name = "Freon formation" + id = "freonformation" + +/datum/gas_reaction/freonformation/init_reqs() //minimum requirements for freon formation + min_requirements = list( + /datum/gas/plasma = 40, + /datum/gas/carbon_dioxide = 20, + /datum/gas/bz = 20, + "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + ) + +/datum/gas_reaction/freonformation/react(datum/gas_mixture/air) + var/list/cached_gases = air.gases + var/temperature = air.temperature + var/old_heat_capacity = air.heat_capacity() + var/heat_efficency = min(temperature/(FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 10), cached_gases[/datum/gas/plasma][MOLES], cached_gases[/datum/gas/carbon_dioxide][MOLES], cached_gases[/datum/gas/bz][MOLES]) + var/energy_used = heat_efficency * 100 + ASSERT_GAS(/datum/gas/freon,air) + if ((cached_gases[/datum/gas/plasma][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/carbon_dioxide][MOLES] - heat_efficency < 0) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing. + return NO_REACTION + cached_gases[/datum/gas/plasma][MOLES] -= heat_efficency * 5 + cached_gases[/datum/gas/carbon_dioxide][MOLES] -= heat_efficency + cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.5 + cached_gases[/datum/gas/freon][MOLES] += heat_efficency * 2 + + if(energy_used > 0) + var/new_heat_capacity = air.heat_capacity() + if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) + air.temperature = max(((temperature*old_heat_capacity - energy_used)/new_heat_capacity),TCMB) + return REACTING + /datum/gas_reaction/stimformation //Stimulum formation follows a strange pattern of how effective it will be at a given temperature, having some multiple peaks and some large dropoffs. Exo and endo thermic. priority = 5 name = "Stimulum formation" diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 2d922c16442..64f09c89d83 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -95,7 +95,7 @@ var/datum/radio_frequency/radio_connection var/list/TLV = list( // Breathable air. - "pressure" = new/datum/tlv(ONE_ATMOSPHERE * 0.8, ONE_ATMOSPHERE* 0.9, ONE_ATMOSPHERE * 1.1, ONE_ATMOSPHERE * 1.2), // kPa. Values are min2, min1, max1, max2 + "pressure" = new/datum/tlv(HAZARD_LOW_PRESSURE, WARNING_LOW_PRESSURE, WARNING_HIGH_PRESSURE, HAZARD_HIGH_PRESSURE), // kPa. Values are min2, min1, max1, max2 "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), /datum/gas/oxygen = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa /datum/gas/nitrogen = new/datum/tlv(-1, -1, 1000, 1000), @@ -109,7 +109,8 @@ /datum/gas/tritium = new/datum/tlv/dangerous, /datum/gas/stimulum = new/datum/tlv/dangerous, /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000) // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + /datum/gas/freon = new/datum/tlv/dangerous ) /obj/machinery/airalarm/server // No checks here. @@ -128,7 +129,8 @@ /datum/gas/tritium = new/datum/tlv/no_checks, /datum/gas/stimulum = new/datum/tlv/no_checks, /datum/gas/nitryl = new/datum/tlv/no_checks, - /datum/gas/pluoxium = new/datum/tlv/no_checks + /datum/gas/pluoxium = new/datum/tlv/no_checks, + /datum/gas/freon = new/datum/tlv/no_checks ) /obj/machinery/airalarm/kitchen_cold_room // Kitchen cold rooms start off at -80°C or 193.15°K. @@ -147,7 +149,8 @@ /datum/gas/tritium = new/datum/tlv/dangerous, /datum/gas/stimulum = new/datum/tlv/dangerous, /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000) // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + /datum/gas/freon = new/datum/tlv/dangerous ) /obj/machinery/airalarm/unlocked @@ -535,7 +538,8 @@ /datum/gas/tritium, /datum/gas/bz, /datum/gas/stimulum, - /datum/gas/pluoxium + /datum/gas/pluoxium, + /datum/gas/freon ), "scrubbing" = 1, "widenet" = 1 diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index c670c07798f..350f9152d41 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -26,6 +26,9 @@ var/piping_layer = PIPING_LAYER_DEFAULT var/pipe_flags = NONE + ///This only works on pipes, because they have 1000 subtypes wich need to be visible and invisible under tiles, so we track this here + var/hide = TRUE + var/static/list/iconsetids = list() var/static/list/pipeimages = list() @@ -185,11 +188,6 @@ if(!can_unwrench(user)) return ..() - var/turf/T = get_turf(src) - if (level==1 && isturf(T) && T.intact) - to_chat(user, "You must remove the plating first!") - return TRUE - var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() add_fingerprint(user) @@ -266,8 +264,6 @@ add_atom_colour(obj_color, FIXED_COLOUR_PRIORITY) pipe_color = obj_color setPipingLayer(set_layer) - var/turf/T = get_turf(src) - level = T.intact ? 2 : 1 atmosinit() var/list/nodes = pipeline_expansion() for(var/obj/machinery/atmospherics/A in nodes) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm index 6167d7ea015..c4b14274e03 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm @@ -13,9 +13,5 @@ if(EAST, WEST) initialize_directions = EAST|WEST -/obj/machinery/atmospherics/components/binary/hide(intact) - update_icon() - ..() - /obj/machinery/atmospherics/components/binary/getNodeConnects() return list(turn(dir, 180), dir) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 4bba6e94c04..1310b39b16a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -14,7 +14,8 @@ name = "dual-port air vent" desc = "Has a valve and pump attached to it. There are two ports." - level = 1 + hide = TRUE + var/frequency = 0 var/id = null var/datum/radio_frequency/radio_connection diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index cb994fb40c9..2a6484648f6 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -117,10 +117,6 @@ Passive gate is similar to the regular pump except: if(pressure == "max") pressure = MAX_OUTPUT_PRESSURE . = TRUE - else if(pressure == "input") - pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null - if(!isnull(pressure) || !..()) - . = TRUE else if(text2num(pressure) != null) pressure = text2num(pressure) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index cb9bc3e03c9..e95eb56be5a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -123,10 +123,6 @@ if(pressure == "max") pressure = MAX_OUTPUT_PRESSURE . = TRUE - else if(pressure == "input") - pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null - if(!isnull(pressure) && !..()) - . = TRUE else if(text2num(pressure) != null) pressure = text2num(pressure) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index fa44af56d49..41007137b2c 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -141,10 +141,6 @@ if(rate == "max") rate = MAX_TRANSFER_RATE . = TRUE - else if(rate == "input") - rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, transfer_rate) as num|null - if(!isnull(rate) && !..()) - . = TRUE else if(text2num(rate) != null) rate = text2num(rate) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index eee2f383561..aab9f3f464c 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -2,8 +2,10 @@ // On top of that, now people can add component-speciic procs/vars if they want! /obj/machinery/atmospherics/components + hide = FALSE + var/welded = FALSE //Used on pumps and scrubbers - var/showpipe = FALSE + var/showpipe = TRUE var/shift_underlay_only = TRUE //Layering only shifts underlay? var/list/datum/pipeline/parents @@ -20,26 +22,30 @@ A.volume = 200 airs[i] = A +/obj/machinery/atmospherics/components/Initialize() + . = ..() + + if(hide) + RegisterSignal(src, COMSIG_OBJ_HIDE, .proc/hide_pipe) + // Iconnery /obj/machinery/atmospherics/components/proc/update_icon_nopipes() return +/obj/machinery/atmospherics/components/proc/hide_pipe(datum/source, covered) + showpipe = !covered + update_icon() + /obj/machinery/atmospherics/components/update_icon() update_icon_nopipes() underlays.Cut() - var/turf/T = loc - if(level == 2 || (istype(T) && !T.intact)) - showpipe = TRUE - plane = GAME_PLANE - else - showpipe = FALSE - plane = FLOOR_PLANE + plane = showpipe ? GAME_PLANE : FLOOR_PLANE if(!showpipe) - return //no need to update the pipes if they aren't showing + return var/connected = 0 //Direction bitset diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index b5d4614e9af..74fc85c37ac 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -153,10 +153,6 @@ if(rate == "max") rate = MAX_TRANSFER_RATE . = TRUE - else if(rate == "input") - rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, transfer_rate) as num|null - if(!isnull(rate) && !..()) - . = TRUE else if(text2num(rate) != null) rate = text2num(rate) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 8e3f647d88d..440adce51d6 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -154,10 +154,6 @@ if(pressure == "max") pressure = MAX_OUTPUT_PRESSURE . = TRUE - else if(pressure == "input") - pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null - if(!isnull(pressure) && !..()) - . = TRUE else if(text2num(pressure) != null) pressure = text2num(pressure) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 76f3f999c9e..f495583884f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -7,6 +7,7 @@ use_power = IDLE_POWER_USE can_unwrench = TRUE shift_underlay_only = FALSE + hide = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs @@ -18,7 +19,6 @@ var/id = null var/datum/radio_frequency/radio_connection - level = 1 layer = GAS_SCRUBBER_LAYER pipe_state = "injector" @@ -158,10 +158,6 @@ if(rate == "max") rate = MAX_TRANSFER_RATE . = TRUE - else if(rate == "input") - rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, volume_rate) as num|null - if(!isnull(rate) && !..()) - . = TRUE else if(text2num(rate) != null) rate = text2num(rate) . = TRUE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index a113484d20b..541550e1053 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -3,9 +3,9 @@ name = "passive vent" desc = "It is an open vent." - can_unwrench = TRUE - level = 1 + can_unwrench = TRUE + hide = TRUE layer = GAS_SCRUBBER_LAYER pipe_state = "pvent" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index 03ae98bb6a6..6d02ab696e6 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -7,8 +7,8 @@ can_unwrench = TRUE use_power = NO_POWER_USE - level = 0 layer = GAS_FILTER_LAYER + hide = TRUE pipe_flags = PIPING_ONE_PER_TURF pipe_state = "connector" @@ -51,7 +51,7 @@ icon_state = "connector_map-3" /obj/machinery/atmospherics/components/unary/portables_connector/visible - level = 2 + hide = FALSE /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1 piping_layer = 1 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 4a48f490d9c..e904c968881 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -29,11 +29,12 @@ . = ..() initialize_directions = dir -/obj/machinery/atmospherics/components/unary/thermomachine/on_construction() +/obj/machinery/atmospherics/components/unary/thermomachine/on_construction(obj_color, set_layer) var/obj/item/circuitboard/machine/thermomachine/board = circuit if(board) piping_layer = board.pipe_layer - ..(dir, piping_layer) + set_layer = piping_layer + ..() /obj/machinery/atmospherics/components/unary/thermomachine/RefreshParts() var/B @@ -103,9 +104,11 @@ SetInitDirections() var/obj/machinery/atmospherics/node = nodes[1] if(node) - node.disconnect(src) + if(src in node.nodes) //Only if it's actually connected. On-pipe version would is one-sided. + node.disconnect(src) nodes[1] = null - nullifyPipenet(parents[1]) + if(parents[1]) + nullifyPipenet(parents[1]) atmosinit() node = nodes[1] diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm index c185ef6bdb9..d185ceb686f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm @@ -20,10 +20,6 @@ ..() update_icon() -/obj/machinery/atmospherics/components/unary/hide(intact) - update_icon() - ..(intact) - /obj/machinery/atmospherics/components/unary/proc/assign_uid_vents() uid = num2text(gl_uid++) return uid 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 ec64bd45fd7..680dfd16a62 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -14,8 +14,8 @@ use_power = IDLE_POWER_USE can_unwrench = TRUE welded = FALSE - level = 1 layer = GAS_SCRUBBER_LAYER + hide = TRUE var/id_tag = null var/pump_direction = RELEASING 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 cb4e3ebc969..0905eb361d4 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -11,8 +11,8 @@ active_power_usage = 60 can_unwrench = TRUE welded = FALSE - level = 1 layer = GAS_SCRUBBER_LAYER + hide = TRUE var/id_tag = null var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 9a10a605038..239258a4058 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -44,8 +44,6 @@ for(var/obj/machinery/atmospherics/pipe/pipe in loc) if(pipe.piping_layer == target_layer) candidate = pipe - if(pipe.level == 2) - break if(candidate) target = candidate setAttachLayer(candidate.piping_layer) diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index 6ffffb9c453..2fd2da1a24a 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -1,5 +1,4 @@ /obj/machinery/atmospherics/pipe/heat_exchanging - level = 2 var/minimum_temperature_difference = 20 var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT color = "#404040" @@ -7,8 +6,11 @@ var/icon_temperature = T20C //stop small changes in temperature causing icon refresh resistance_flags = LAVA_PROOF | FIRE_PROOF + hide = FALSE + /obj/machinery/atmospherics/pipe/heat_exchanging/Initialize() . = ..() + add_atom_colour("#404040", FIXED_COLOUR_PRIORITY) /obj/machinery/atmospherics/pipe/heat_exchanging/isConnectable(obj/machinery/atmospherics/pipe/heat_exchanging/target, given_layer, HE_type_check = TRUE) @@ -16,9 +18,6 @@ return FALSE . = ..() -/obj/machinery/atmospherics/pipe/heat_exchanging/hide() - return - /obj/machinery/atmospherics/pipe/heat_exchanging/process_atmos() var/environment_temperature = 0 var/datum/gas_mixture/pipe_air = return_air() diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm index ad5f65f9d3d..531c5e113a8 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm @@ -33,8 +33,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() - update_alpha() - /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 piping_layer = 1 diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index 6d4b824fb14..3eed910ecdb 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -38,8 +38,6 @@ add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() - /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 piping_layer = 1 diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm index 88086e44e23..a8425629c9a 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm @@ -36,8 +36,6 @@ add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() - /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 piping_layer = 1 diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm index e3ed1a6c37a..c5304c3416e 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm @@ -27,8 +27,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() - update_alpha() - /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 piping_layer = 1 diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index d2cb01ced03..cc29cbf8be3 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -51,8 +51,6 @@ for(var/node in back_nodes) add_attached_images(node) - update_alpha() - /obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_images(obj/machinery/atmospherics/A) if(!A) return @@ -104,8 +102,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/atmosinit() normalize_cardinal_directions() findAllConnections() - var/turf/T = loc // hide if turf is not intact - hide(T.intact) /obj/machinery/atmospherics/pipe/layer_manifold/setPipingLayer() piping_layer = PIPING_LAYER_DEFAULT @@ -139,5 +135,4 @@ to_chat(user, "You align yourself with the [user.ventcrawl_layer]\th output.") /obj/machinery/atmospherics/pipe/layer_manifold/visible - level = PIPE_VISIBLE_LEVEL layer = GAS_PIPE_VISIBLE_LAYER diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index 5503fa3dfab..dc132be2ff8 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -48,4 +48,3 @@ add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index d5e023a5d78..f763c5769e4 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -42,4 +42,3 @@ add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/mapping.dm b/code/modules/atmospherics/machinery/pipes/mapping.dm index d9d74e74e37..e7f4ce03054 100644 --- a/code/modules/atmospherics/machinery/pipes/mapping.dm +++ b/code/modules/atmospherics/machinery/pipes/mapping.dm @@ -6,7 +6,7 @@ color = Color; \ } \ ##Fulltype/visible { \ - level = PIPE_VISIBLE_LEVEL; \ + hide = FALSE; \ layer = GAS_PIPE_VISIBLE_LAYER; \ FASTDMM_PROP(pipe_group = "atmos-[piping_layer]-"+Type+"-visible");\ } \ @@ -19,7 +19,7 @@ icon_state = Iconbase + "-3"; \ } \ ##Fulltype/hidden { \ - level = PIPE_HIDDEN_LEVEL; \ + hide = TRUE; \ FASTDMM_PROP(pipe_group = "atmos-[piping_layer]-"+Type+"-hidden");\ } \ ##Fulltype/hidden/layer1 { \ diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 11b8f776af2..6b84bb04560 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -3,8 +3,6 @@ var/datum/gas_mixture/air_temporary //used when reconstructing a pipeline that broke var/volume = 0 - level = 1 - use_power = NO_POWER_USE can_unwrench = 1 var/datum/pipeline/parent = null @@ -24,6 +22,13 @@ volume = 35 * device_type ..() +///I have no idea why there's a new and at this point I'm too afraid to ask +/obj/machinery/atmospherics/pipe/Initialize(mapload) + . = ..() + + if(hide) + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) //if changing this, change the subtypes RemoveElements too, because thats how bespoke works + /obj/machinery/atmospherics/pipe/nullifyNode(i) var/obj/machinery/atmospherics/oldN = nodes[i] ..() @@ -38,16 +43,6 @@ parent = new parent.build_pipeline(src) -/obj/machinery/atmospherics/pipe/atmosinit() - var/turf/T = loc // hide if turf is not intact - hide(T.intact) - ..() - -/obj/machinery/atmospherics/pipe/hide(i) - if(level == 1 && isturf(loc)) - invisibility = i ? INVISIBILITY_MAXIMUM : 0 - update_icon() - /obj/machinery/atmospherics/pipe/proc/releaseAirToTurf() if(air_temporary) var/turf/T = loc @@ -91,13 +86,6 @@ qdel(meter) . = ..() -/obj/machinery/atmospherics/pipe/update_icon() - . = ..() - update_alpha() - -/obj/machinery/atmospherics/pipe/proc/update_alpha() - alpha = invisibility ? 64 : 255 - /obj/machinery/atmospherics/pipe/proc/update_node_icon() for(var/i in 1 to device_type) if(nodes[i]) diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm index b0f621f741f..358e9650d40 100644 --- a/code/modules/atmospherics/machinery/pipes/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple.dm @@ -34,4 +34,3 @@ /obj/machinery/atmospherics/pipe/simple/update_icon() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() - update_alpha() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index aa0e972f935..3139ff42ec8 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -52,7 +52,8 @@ "stimulum" = /obj/machinery/portable_atmospherics/canister/stimulum, "pluoxium" = /obj/machinery/portable_atmospherics/canister/pluoxium, "caution" = /obj/machinery/portable_atmospherics/canister, - "miasma" = /obj/machinery/portable_atmospherics/canister/miasma + "miasma" = /obj/machinery/portable_atmospherics/canister/miasma, + "freon" = /obj/machinery/portable_atmospherics/canister/freon ) /obj/machinery/portable_atmospherics/canister/interact(mob/user) @@ -147,6 +148,13 @@ gas_type = /datum/gas/miasma filled = 1 +/obj/machinery/portable_atmospherics/canister/freon + name = "freon canister" + desc = "Freon. Can absorb heat" + icon_state = "freon" + gas_type = /datum/gas/freon + filled = 1 + /obj/machinery/portable_atmospherics/canister/fusion_test name = "fusion test canister" desc = "Don't be a badmin." diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 438101a2b76..d3768d3d216 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -143,10 +143,6 @@ else if(pressure == "max") pressure = PUMP_MAX_PRESSURE . = TRUE - else if(pressure == "input") - pressure = input("New release pressure ([PUMP_MIN_PRESSURE]-[PUMP_MAX_PRESSURE] kPa):", name, pump.target_pressure) as num|null - if(!isnull(pressure) && !..()) - . = TRUE else if(text2num(pressure) != null) pressure = text2num(pressure) . = TRUE diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index b1c613a4614..9729f6c4980 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -11,7 +11,7 @@ var/use_overlays = TRUE volume = 1000 - var/list/scrubbing = list(/datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitryl, /datum/gas/tritium, /datum/gas/hypernoblium, /datum/gas/water_vapor) + var/list/scrubbing = list(/datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitryl, /datum/gas/tritium, /datum/gas/hypernoblium, /datum/gas/water_vapor, /datum/gas/freon) /obj/machinery/portable_atmospherics/scrubber/Destroy() var/turf/T = get_turf(src) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 9d790dd7d75..f40168e1ece 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -9,7 +9,7 @@ -/obj/item/twohanded/ctf +/obj/item/ctf name = "banner" icon = 'icons/obj/banner.dmi' icon_state = "banner" @@ -31,16 +31,20 @@ var/obj/effect/ctf/flag_reset/reset var/reset_path = /obj/effect/ctf/flag_reset -/obj/item/twohanded/ctf/Destroy() +/obj/item/ctf/Destroy() QDEL_NULL(reset) return ..() -/obj/item/twohanded/ctf/Initialize() +/obj/item/ctf/Initialize() . = ..() if(!reset) reset = new reset_path(get_turf(src)) -/obj/item/twohanded/ctf/process() +/obj/item/ctf/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed) + +/obj/item/ctf/process() if(is_ctf_target(loc)) //don't reset from someone's hands. return PROCESS_KILL if(world.time > reset_cooldown) @@ -52,7 +56,7 @@ STOP_PROCESSING(SSobj, src) //ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/twohanded/ctf/attack_hand(mob/living/user) +/obj/item/ctf/attack_hand(mob/living/user) if(!is_ctf_target(user) && !anyonecanpickup) to_chat(user, "Non-players shouldn't be moving the flag!") return @@ -76,7 +80,7 @@ STOP_PROCESSING(SSobj, src) ..() -/obj/item/twohanded/ctf/dropped(mob/user) +/obj/item/ctf/dropped(mob/user) ..() user.anchored = FALSE user.status_flags |= CANPUSH @@ -89,7 +93,7 @@ anchored = TRUE -/obj/item/twohanded/ctf/red +/obj/item/ctf/red name = "red flag" icon_state = "banner-red" item_state = "banner-red" @@ -98,7 +102,7 @@ reset_path = /obj/effect/ctf/flag_reset/red -/obj/item/twohanded/ctf/blue +/obj/item/ctf/blue name = "blue flag" icon_state = "banner-blue" item_state = "banner-blue" @@ -277,8 +281,8 @@ attack_ghost(ghost) /obj/machinery/capture_the_flag/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/twohanded/ctf)) - var/obj/item/twohanded/ctf/flag = I + if(istype(I, /obj/item/ctf)) + var/obj/item/ctf/flag = I if(flag.team != src.team) user.transferItemToLoc(flag, get_turf(flag.reset), TRUE) points++ @@ -295,7 +299,7 @@ if(istype(mob_area, /area/ctf)) to_chat(M, "[team] team wins!") to_chat(M, "Teams have been cleared. Click on the machines to vote to begin another round.") - for(var/obj/item/twohanded/ctf/W in M) + for(var/obj/item/ctf/W in M) M.dropItemToGround(W) M.dust() for(var/obj/machinery/control_point/control in GLOB.machines) @@ -336,7 +340,7 @@ var/list/ctf_object_typecache = typecacheof(list( /obj/machinery, /obj/effect/ctf, - /obj/item/twohanded/ctf + /obj/item/ctf )) for(var/atm in A) if (isturf(A) || ismob(A) || isarea(A)) @@ -481,7 +485,7 @@ suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf toggle_helmet = FALSE // see the whites of their eyes shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat id = /obj/item/card/id/away belt = /obj/item/gun/ballistic/automatic/pistol/deagle/ctf l_pocket = /obj/item/ammo_box/magazine/recharge/ctf @@ -609,6 +613,7 @@ QDEL_IN(src, AMMO_DROP_LIFETIME) /obj/effect/ctf/ammo/Crossed(atom/movable/AM) + . = ..() reload(AM) /obj/effect/ctf/ammo/Bump(atom/A) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 2b8fde86488..78227da1d77 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -41,9 +41,12 @@ if(is_banned_from(user.key, banType)) to_chat(user, "You are jobanned!") return + if(!allow_spawn(user)) + return if(QDELETED(src) || QDELETED(user)) return var/ghost_role = alert("Become [mob_name]? (Warning, You can no longer be revived!)",,"Yes","No") + if(ghost_role == "No" || !loc) return log_game("[key_name(user)] became [mob_name]") @@ -65,6 +68,9 @@ GLOB.mob_spawners -= name return ..() +/obj/effect/mob_spawn/proc/allow_spawn(mob/user) //Override this to add spawn limits to a ghost role + return TRUE + /obj/effect/mob_spawn/proc/special(mob/M) return @@ -469,7 +475,7 @@ glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba head = /obj/item/clothing/head/centhat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat shoes = /obj/item/clothing/shoes/combat/swat r_pocket = /obj/item/lighter id = /obj/item/card/id @@ -486,7 +492,7 @@ uniform = /obj/item/clothing/under/rank/security/officer suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat mask = /obj/item/clothing/mask/gas/sechailer/swat head = /obj/item/clothing/head/helmet/swat/nanotrasen back = /obj/item/storage/backpack/security diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 9de0eda024a..65241e3513f 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -1,164 +1,246 @@ +/// Station home gateway GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) +/// List of possible gateway destinations. +GLOBAL_LIST_EMPTY(gateway_destinations) + +/** + * Corresponds to single entry in gateway control. + * + * Will NOT be added automatically to GLOB.gateway_destinations list. + */ +/datum/gateway_destination + var/name = "Unknown Destination" + var/wait = 0 /// How long after roundstart this destination becomes active + var/enabled = TRUE /// If disabled, the destination won't be availible + var/hidden = FALSE /// Will not show on gateway controls at all. + +/* Can a gateway link to this destination right now. */ +/datum/gateway_destination/proc/is_availible() + return enabled && (world.time - SSticker.round_start_time >= wait) + +/* Returns user-friendly description why you can't connect to this destination, displayed in UI */ +/datum/gateway_destination/proc/get_availible_reason() + . = "Unreachable" + if(world.time - SSticker.round_start_time < wait) + . = "Connection desynchronized. Recalibration in progress." + +/* Check if the movable is allowed to arrive at this destination (exile implants mostly) */ +/datum/gateway_destination/proc/incoming_pass_check(atom/movable/AM) + return TRUE + +/* Get the actual turf we'll arrive at */ +/datum/gateway_destination/proc/get_target_turf() + CRASH("get target turf not implemented for this destination type") + +/* Called after moving the movable to target turf */ +/datum/gateway_destination/proc/post_transfer(atom/movable/AM) + if (ismob(AM)) + var/mob/M = AM + if (M.client) + M.client.move_delay = max(world.time + 5, M.client.move_delay) + +/* Called when gateway activates with this destination. */ +/datum/gateway_destination/proc/activate(obj/machinery/gateway/activated) + return + +/* Called when gateway targeting this destination deactivates. */ +/datum/gateway_destination/proc/deactivate(obj/machinery/gateway/deactivated) + return + +/* Returns data used by gateway controller ui */ +/datum/gateway_destination/proc/get_ui_data() + . = list() + .["ref"] = REF(src) + .["name"] = name + .["availible"] = is_availible() + .["reason"] = get_availible_reason() + if(wait) + .["timeout"] = max(1 - (wait - (world.time - SSticker.round_start_time)) / wait, 0) + +/* Destination is another gateway */ +/datum/gateway_destination/gateway + /// The gateway this destination points at + var/obj/machinery/gateway/target_gateway + +/* We set the target gateway target to activator gateway */ +/datum/gateway_destination/gateway/activate(obj/machinery/gateway/activated) + if(!target_gateway.target) + target_gateway.activate(activated) + +/* We turn off the target gateway if it's linked with us */ +/datum/gateway_destination/gateway/deactivate(obj/machinery/gateway/deactivated) + if(target_gateway.target == deactivated.destination) + target_gateway.deactivate() + +/datum/gateway_destination/gateway/is_availible() + return ..() && target_gateway.calibrated && !target_gateway.target && target_gateway.powered() + +/datum/gateway_destination/gateway/get_availible_reason() + . = ..() + if(!target_gateway.calibrated) + . = "Exit gateway malfunction. Manual recalibration required." + if(target_gateway.target) + . = "Exit gateway in use." + if(!target_gateway.powered()) + . = "Exit gateway unpowered." + +/datum/gateway_destination/gateway/get_target_turf() + return get_step(target_gateway.portal,SOUTH) + +/datum/gateway_destination/gateway/post_transfer(atom/movable/AM) + . = ..() + addtimer(CALLBACK(AM,/atom/movable.proc/setDir,SOUTH),0) + +/* Special home destination, so we can check exile implants */ +/datum/gateway_destination/gateway/home + +/datum/gateway_destination/gateway/home/incoming_pass_check(atom/movable/AM) + if(isliving(AM)) + if(check_exile_implant(AM)) + return FALSE + else + for(var/mob/living/L in AM.contents) + if(check_exile_implant(L)) + target_gateway.say("Rejecting [AM]: Exile implant detected in contained lifeform.") + return FALSE + if(AM.has_buckled_mobs()) + for(var/mob/living/L in AM.buckled_mobs) + if(check_exile_implant(L)) + target_gateway.say("Rejecting [AM]: Exile implant detected in close proximity lifeform.") + return FALSE + return TRUE + +/datum/gateway_destination/gateway/home/proc/check_exile_implant(mob/living/L) + for(var/obj/item/implant/exile/E in L.implants)//Checking that there is an exile implant + to_chat(L, "The station gate has detected your exile implant and is blocking your entry.") + return TRUE + return FALSE + + +/* Destination is one ore more turfs - created by landmarks */ +/datum/gateway_destination/point + var/list/target_turfs = list() + /// Used by away landmarks + var/id + +/datum/gateway_destination/point/get_target_turf() + return pick(target_turfs) + +/* Dense invisible object starting the teleportation. Created by gateways on activation. */ +/obj/effect/gateway_portal_bumper + var/obj/machinery/gateway/gateway + density = TRUE + invisibility = INVISIBILITY_ABSTRACT + +/obj/effect/gateway_portal_bumper/Bumped(atom/movable/AM) + if(get_dir(src,AM) == SOUTH) + gateway.Transfer(AM) + +/obj/effect/gateway_portal_bumper/Destroy(force) + . = ..() + gateway = null /obj/machinery/gateway name = "gateway" desc = "A mysterious gateway built by unknown hands, it allows for faster than light travel to far-flung locations." icon = 'icons/obj/machines/gateway.dmi' icon_state = "off" - density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - var/active = 0 - var/checkparts = TRUE - var/list/obj/effect/landmark/randomspawns = list() + + // 3x2 offset by one row + pixel_x = -32 + pixel_y = -32 + bound_height = 64 + bound_width = 96 + bound_x = -32 + bound_y = 0 + density = TRUE + + use_power = IDLE_POWER_USE + idle_power_usage = 100 + active_power_usage = 5000 + var/calibrated = TRUE - var/list/linked = list() - var/can_link = FALSE //Is this the centerpiece? + /// Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway + var/destination_type = /datum/gateway_destination/gateway + /// Name of the generated destination + var/destination_name = "Unknown Gateway" + /// This is our own destination, pointing at this gateway + var/datum/gateway_destination/gateway/destination + /// This is current active destination + var/datum/gateway_destination/target + /// bumper object, the thing that starts actual teleport + var/obj/effect/gateway_portal_bumper/portal /obj/machinery/gateway/Initialize() - randomspawns = GLOB.awaydestinations + generate_destination() update_icon() - if(!istype(src, /obj/machinery/gateway/centerstation) && !istype(src, /obj/machinery/gateway/centeraway)) - switch(dir) - if(SOUTH,SOUTHEAST,SOUTHWEST) - density = FALSE return ..() -/obj/machinery/gateway/proc/toggleoff() - for(var/obj/machinery/gateway/G in linked) - G.active = 0 - G.update_icon() - active = 0 +/obj/machinery/gateway/proc/generate_destination() + destination = new destination_type + destination.name = destination_name + destination.target_gateway = src + GLOB.gateway_destinations += destination + +/obj/machinery/gateway/proc/deactivate() + var/datum/gateway_destination/dest = target + target = null + dest.deactivate(src) + QDEL_NULL(portal) + use_power = IDLE_POWER_USE update_icon() -/obj/machinery/gateway/proc/detect() - if(!can_link) - return FALSE - linked = list() //clear the list - var/turf/T = loc - var/ready = FALSE - - for(var/i in GLOB.alldirs) - T = get_step(loc, i) - var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T - if(G) - linked.Add(G) - continue - - //this is only done if we fail to find a part - ready = FALSE - toggleoff() - break - - if((linked.len == 8) || !checkparts) - ready = TRUE - return ready +/obj/machinery/gateway/process() + if((machine_stat & (NOPOWER)) && use_power) + if(target) + deactivate() + return /obj/machinery/gateway/update_icon_state() - if(active) + if(target) icon_state = "on" else icon_state = "off" -/obj/machinery/gateway/attack_hand(mob/user) - . = ..() - if(.) - return - if(!detect()) - return - if(!active) - toggleon(user) +/obj/machinery/gateway/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE) + return + +/obj/machinery/gateway/proc/generate_bumper() + portal = new(get_turf(src)) + portal.gateway = src + +/obj/machinery/gateway/proc/activate(datum/gateway_destination/D) + if(!powered() || target) return - toggleoff() + target = D + target.activate(destination) + generate_bumper() + use_power = ACTIVE_POWER_USE + update_icon() -/obj/machinery/gateway/proc/toggleon(mob/user) - return FALSE +/obj/machinery/gateway/proc/Transfer(atom/movable/AM) + if(!target || !target.incoming_pass_check(AM)) + return + AM.forceMove(target.get_target_turf()) + target.post_transfer(AM) -/obj/machinery/gateway/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE) - return +/* Station's primary gateway */ +/obj/machinery/gateway/centerstation + destination_type = /datum/gateway_destination/gateway/home + destination_name = "Home Gateway" /obj/machinery/gateway/centerstation/Initialize() . = ..() if(!GLOB.the_gateway) GLOB.the_gateway = src - update_icon() - wait = world.time + CONFIG_GET(number/gateway_delay) //+ thirty minutes default - awaygate = locate(/obj/machinery/gateway/centeraway) /obj/machinery/gateway/centerstation/Destroy() if(GLOB.the_gateway == src) GLOB.the_gateway = null return ..() -//this is da important part wot makes things go -/obj/machinery/gateway/centerstation - density = TRUE - icon_state = "offcenter" - use_power = IDLE_POWER_USE - - //warping vars - var/wait = 0 //this just grabs world.time at world start - var/obj/machinery/gateway/centeraway/awaygate = null - can_link = TRUE - -/obj/machinery/gateway/centerstation/update_icon_state() - if(active) - icon_state = "oncenter" - else - icon_state = "offcenter" - -/obj/machinery/gateway/centerstation/process() - if((machine_stat & (NOPOWER)) && use_power) - if(active) - toggleoff() - return - - if(active) - use_power(5000) - -/obj/machinery/gateway/centerstation/toggleon(mob/user) - if(!detect()) - return - if(!powered()) - return - if(!awaygate) - to_chat(user, "Error: No destination found.") - return - if(world.time < wait) - to_chat(user, "Error: Warpspace triangulation in progress. Estimated time to completion: [DisplayTimeText(wait - world.time)].") - return - - for(var/obj/machinery/gateway/G in linked) - G.active = 1 - G.update_icon() - active = 1 - update_icon() - -//okay, here's the good teleporting stuff -/obj/machinery/gateway/centerstation/Bumped(atom/movable/AM) - if(!active) - return - if(!detect()) - return - if(!awaygate || QDELETED(awaygate)) - return - - if(awaygate.calibrated) - AM.forceMove(get_step(awaygate.loc, SOUTH)) - AM.setDir(SOUTH) - if (ismob(AM)) - var/mob/M = AM - if (M.client) - M.client.move_delay = max(world.time + 5, M.client.move_delay) - return - else - var/obj/effect/landmark/dest = pick(randomspawns) - if(dest) - AM.forceMove(get_turf(dest)) - AM.setDir(SOUTH) - use_power(5000) - return - -/obj/machinery/gateway/centeraway/multitool_act(mob/living/user, obj/item/I) +/obj/machinery/gateway/multitool_act(mob/living/user, obj/item/I) if(calibrated) to_chat(user, "The gate is already calibrated, there is no work for you to do here.") else @@ -166,87 +248,77 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) calibrated = TRUE return TRUE -/////////////////////////////////////Away//////////////////////// - - -/obj/machinery/gateway/centeraway +/* Doesn't need control console or power, always links to home when interacting. */ +/obj/machinery/gateway/away density = TRUE - icon_state = "offcenter" use_power = NO_POWER_USE - var/obj/machinery/gateway/centerstation/stationgate = null - can_link = TRUE - -/obj/machinery/gateway/centeraway/Initialize() +/obj/machinery/gateway/away/interact(mob/user, special_state) . = ..() - update_icon() - stationgate = locate(/obj/machinery/gateway/centerstation) - - -/obj/machinery/gateway/centeraway/update_icon_state() - if(active) - icon_state = "oncenter" - else - icon_state = "offcenter" - -/obj/machinery/gateway/centeraway/toggleon(mob/user) - if(!detect()) - return - if(!stationgate) - to_chat(user, "Error: No destination found.") - return - - for(var/obj/machinery/gateway/G in linked) - G.active = 1 - G.update_icon() - active = 1 - update_icon() - -/obj/machinery/gateway/centeraway/proc/check_exile_implant(mob/living/L) - for(var/obj/item/implant/exile/E in L.implants)//Checking that there is an exile implant - to_chat(L, "\black The station gate has detected your exile implant and is blocking your entry.") - return TRUE - return FALSE - -/obj/machinery/gateway/centeraway/Bumped(atom/movable/AM) - if(!detect()) - return - if(!active) - return - if(!stationgate || QDELETED(stationgate)) - return - if(isliving(AM)) - if(check_exile_implant(AM)) + if(!target) + if(!GLOB.the_gateway) + to_chat(user,"Home gateway is not responding!") + if(GLOB.the_gateway.target) + to_chat(user,"Home gateway already in use!") return + activate(GLOB.the_gateway.destination) else - for(var/mob/living/L in AM.contents) - if(check_exile_implant(L)) - say("Rejecting [AM]: Exile implant detected in contained lifeform.") - return - if(AM.has_buckled_mobs()) - for(var/mob/living/L in AM.buckled_mobs) - if(check_exile_implant(L)) - say("Rejecting [AM]: Exile implant detected in close proximity lifeform.") - return - AM.forceMove(get_step(stationgate.loc, SOUTH)) - AM.setDir(SOUTH) - if (ismob(AM)) - var/mob/M = AM - if (M.client) - M.client.move_delay = max(world.time + 5, M.client.move_delay) + deactivate() +/* Gateway control computer */ +/obj/machinery/computer/gateway_control + name = "Gateway Control" + desc = "Human friendly interface to the mysterious gate next to it." + var/obj/machinery/gateway/G -/obj/machinery/gateway/centeraway/admin - desc = "A mysterious gateway built by unknown hands, this one seems more compact." - -/obj/machinery/gateway/centeraway/admin/Initialize() +/obj/machinery/computer/gateway_control/Initialize(mapload, obj/item/circuitboard/C) . = ..() - if(stationgate && !stationgate.awaygate) - stationgate.awaygate = src + try_to_linkup() -/obj/machinery/gateway/centeraway/admin/detect() - return TRUE +/obj/machinery/computer/gateway_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui, force_open, datum/tgui/master_ui, datum/ui_state/state = GLOB.default_state) + . = ..() + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "gateway", name, ui_x, ui_y, master_ui, state) + ui.open() +/obj/machinery/computer/gateway_control/ui_data(mob/user) + . = ..() + .["gateway_present"] = G + .["gateway_status"] = G ? G.powered() : FALSE + .["current_target"] = G?.target?.get_ui_data() + var/list/destinations = list() + if(G) + for(var/datum/gateway_destination/D in GLOB.gateway_destinations) + if(D == G.destination) + continue + destinations += list(D.get_ui_data()) + .["destinations"] = destinations + +/obj/machinery/computer/gateway_control/ui_act(action, list/params) + . = ..() + switch(action) + if("linkup") + try_to_linkup() + return TRUE + if("activate") + var/datum/gateway_destination/D = locate(params["destination"]) in GLOB.gateway_destinations + try_to_connect(D) + return TRUE + if("deactivate") + if(G && G.target) + G.deactivate() + return TRUE + +/obj/machinery/computer/gateway_control/proc/try_to_linkup() + G = locate(/obj/machinery/gateway) in view(7,get_turf(src)) + +/obj/machinery/computer/gateway_control/proc/try_to_connect(datum/gateway_destination/D) + if(!D || !G) + return + if(!D.is_availible() || G.target) + return + G.activate(D) /obj/item/paper/fluff/gateway info = "Congratulations,

Your station has been selected to carry out the Gateway Project.

The equipment will be shipped to you at the start of the next quarter.
You are to prepare a secure location to house the equipment as outlined in the attached documents.

--Nanotrasen Bluespace Research" diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index e69129b54dd..a5a8cf30b92 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -252,7 +252,7 @@ if(6) //Cut speed T.visible_message("[user] starts moving slower!") - user.add_movespeed_modifier(MOVESPEED_ID_DIE_OF_FATE, update=TRUE, priority=100, multiplicative_slowdown=1) + user.add_movespeed_modifier(/datum/movespeed_modifier/die_of_fate) if(7) //Throw T.visible_message("Unseen forces throw [user]!") diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 70565e663b1..f02f7a95149 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -515,11 +515,11 @@ /obj/effect/spawner/lootdrop/snowdin/dungeonheavy name = "dungeon heavy" - loot = list(/obj/item/twohanded/singularityhammer = 25, - /obj/item/twohanded/mjollnir = 10, - /obj/item/twohanded/fireaxe = 25, + loot = list(/obj/item/singularityhammer = 25, + /obj/item/mjollnir = 10, + /obj/item/fireaxe = 25, /obj/item/organ/brain/alien = 17, - /obj/item/twohanded/dualsaber = 15, + /obj/item/dualsaber = 15, /obj/item/organ/heart/demon = 7, /obj/item/gun/ballistic/automatic/c20r/unrestricted = 16, /obj/item/gun/magic/wand/resurrection/inert = 15, @@ -540,7 +540,7 @@ loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10, /obj/item/toy/snowball = 15, /obj/item/shovel = 10, - /obj/item/twohanded/spear = 8, + /obj/item/spear = 8, ) //special items//-- diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 1aa70547441..6679125ad6e 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -127,6 +127,7 @@ var/triggered = 0 /obj/effect/meatgrinder/Crossed(atom/movable/AM) + . = ..() Bumped(AM) /obj/effect/meatgrinder/Bumped(atom/movable/AM) diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index b384172c513..3d6f85f96c4 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -2,33 +2,34 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.config.directory]/awaymissionconfig.txt")) /proc/createRandomZlevel() - if(GLOB.awaydestinations.len) //crude, but it saves another var! - return - if(GLOB.potentialRandomZlevels && GLOB.potentialRandomZlevels.len) to_chat(world, "Loading away mission...") var/map = pick(GLOB.potentialRandomZlevels) load_new_z_level(map, "Away Mission") to_chat(world, "Away mission loaded.") -/proc/reset_gateway_spawns(reset = FALSE) - for(var/obj/machinery/gateway/G in world) - if(reset) - G.randomspawns = GLOB.awaydestinations - else - G.randomspawns.Add(GLOB.awaydestinations) - /obj/effect/landmark/awaystart name = "away mission spawn" desc = "Randomly picked away mission spawn points." - -/obj/effect/landmark/awaystart/New() - GLOB.awaydestinations += src - ..() - -/obj/effect/landmark/awaystart/Destroy() - GLOB.awaydestinations -= src - return ..() + var/id + var/delay = TRUE // If the generated destination should be delayed by configured gateway delay + +/obj/effect/landmark/awaystart/Initialize() + . = ..() + var/datum/gateway_destination/point/current + for(var/datum/gateway_destination/point/D in GLOB.gateway_destinations) + if(D.id == id) + current = D + if(!current) + current = new + current.id = id + if(delay) + current.wait = CONFIG_GET(number/gateway_delay) + GLOB.gateway_destinations += current + current.target_turfs += get_turf(src) + +/obj/effect/landmark/awaystart/nodelay + delay = FALSE /proc/generateMapList(filename) . = list() diff --git a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm index 8fe4c8fb5e2..95cb31d27a5 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm @@ -58,3 +58,13 @@ price_max = 200 stock_max = 2 availability_prob = 70 + +/datum/blackmarket_item/clothing/combatmedic_suit + name = "Combat Medic hardsuit" + desc = "A discarded combat medic hardsuit, found in the ruins of a carpet bombed xeno hive. Definately used, but as sturdy as an anchor." + item = /obj/item/clothing/suit/space/hardsuit/combatmedic + + price_min = 5500 + price_max = 7000 + stock_max = 1 + availability_prob = 10 diff --git a/code/modules/cargo/blackmarket/blackmarket_items/tools.dm b/code/modules/cargo/blackmarket/blackmarket_items/tools.dm index 1d046f95c0e..0b2cb16aa82 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/tools.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/tools.dm @@ -44,7 +44,7 @@ /datum/blackmarket_item/tool/binoculars name = "Binoculars" desc = "Increase your sight by 150% with this handy Tool!" - item = /obj/item/twohanded/binoculars + item = /obj/item/binoculars stock = 1 price_min = 400 diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index 8c3808d46a1..3b2a27c6060 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -27,7 +27,7 @@ /datum/blackmarket_item/weapon/bone_spear name = "Bone Spear" desc = "Authentic tribal spear, made from real bones! A steal at any price, especially if you're a caveman." - item = /obj/item/twohanded/spear/bonespear + item = /obj/item/spear/bonespear price_min = 200 price_max = 300 diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index e0c423a1640..e7b13006a7a 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -35,7 +35,7 @@ description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears." reward = 2000 required_count = 5 - wanted_types = list(/obj/item/twohanded/spear) + wanted_types = list(/obj/item/spear) /datum/bounty/item/assistant/toolbox name = "Toolboxes" @@ -150,7 +150,7 @@ description = "Central Command is looking to commission a new BirdBoat-class station. You've been ordered to supply the potted plants." reward = 2000 required_count = 8 - wanted_types = list(/obj/item/twohanded/required/kirbyplants) + wanted_types = list(/obj/item/kirbyplants) /datum/bounty/item/assistant/earmuffs name = "Earmuffs" @@ -176,7 +176,7 @@ name = "Chainsaw" description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please." reward = 2500 - wanted_types = list(/obj/item/twohanded/required/chainsaw) + wanted_types = list(/obj/item/chainsaw) /datum/bounty/item/assistant/ied name = "IED" diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm index a66d6cfd381..d0e946ba2a6 100644 --- a/code/modules/cargo/bounties/chef.dm +++ b/code/modules/cargo/bounties/chef.dm @@ -32,6 +32,13 @@ required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich) +/datum/bounty/item/chef/strawberryicecreamsandwich + name = " Strawberry Ice Cream Sandwiches" + description = "Upper management has been screaming non-stop for more flavourful ice cream. Please send some." + reward = 5000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/strawberryicecreamsandwich) + /datum/bounty/item/chef/bread name = "Bread" description = "Problems with central planning have led to bread prices skyrocketing. Ship some bread to ease tensions." diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index 77687977d7f..8f5fc3fe723 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -19,6 +19,11 @@ description = "The non-human staff of Station 88 has been volunteered to test performance enhancing drugs. Ship them a tank full of Nitryl so they can get started." gas_type = /datum/gas/nitryl +/datum/bounty/item/engineering/gas/freon_tank + name = "Full Tank of Freon" + description = "The Supermatter of station 33 has started the delamination process. Deliver a tank of Freon gas to help them stop it!" + gas_type = /datum/gas/freon + /datum/bounty/item/engineering/gas/tritium_tank name = "Full Tank of Tritium" description = "Station 49 is looking to kickstart their research program. Ship them a tank full of Tritium." diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index e6fb4e1bc6d..b2df34d8f96 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -22,7 +22,7 @@ name = "Bone Axe" description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement." reward = 7500 - wanted_types = list(/obj/item/twohanded/fireaxe/boneaxe) + wanted_types = list(/obj/item/fireaxe/boneaxe) /datum/bounty/item/mining/bone_armor name = "Bone Armor" diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index de75893da83..e8bf847b499 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -167,6 +167,8 @@ else SSshuttle.shuttle_loan.loan_shuttle() say("The supply shuttle has been loaned to CentCom.") + investigate_log("[key_name(usr)] accepted a shuttle loan event.", INVESTIGATE_CARGO) + log_game("[key_name(usr)] accepted a shuttle loan event.") . = TRUE if("add") var/id = text2path(params["id"]) diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index fa0281c621b..a79123591c8 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -101,3 +101,9 @@ material_id = /datum/material/glass export_types = list(/obj/item/stack/sheet/glass, /obj/item/stack/ore, /obj/item/shard) + +/datum/export/material/hot_ice + cost = 400 + message = "cm3 of Hot Ice" + material_id = /datum/material/hot_ice + export_types = /obj/item/stack/sheet/hot_ice diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm index e6fda5f6b10..2b0a1447b21 100644 --- a/code/modules/cargo/exports/parts.dm +++ b/code/modules/cargo/exports/parts.dm @@ -19,3 +19,85 @@ cost = 2000 unit_name = "deactivated alien deconstruction drone" export_types = list(/obj/item/deactivated_swarmer) + +//Computer Tablets and Parts +/datum/export/modular_part + cost = 15 + unit_name = "miscellaneous computer part" + export_types = list(/obj/item/computer_hardware) + include_subtypes = TRUE + +//Processors. + +/datum/export/modular_part/processor + cost = 40 + unit_name = "computer processor" + export_types = list(/obj/item/computer_hardware/processor_unit) + include_subtypes = FALSE + +/datum/export/modular_part/processor/photoic + cost = 100 + unit_name = "advanced computer processor" + export_types = list(/obj/item/computer_hardware/processor_unit) + include_subtypes = FALSE + +//Batteries. + +/datum/export/modular_part/battery + cost = 40 + unit_name = "computer power cell" + export_types = list(/obj/item/stock_parts/cell/computer/nano) + include_subtypes = FALSE + + +/datum/export/modular_part/battery + cost = 100 + unit_name = "upgraded computer power cell" + export_types = list(/obj/item/stock_parts/cell/computer/micro) + include_subtypes = FALSE + + +/datum/export/modular_part/battery/advanced + cost = 150 + unit_name = "advanced computer power cell" + export_types = list(/obj/item/stock_parts/cell/computer) + include_subtypes = FALSE + +//Hard Drives. + +/datum/export/modular_part/harddrive + cost = 10 + unit_name = "tiny computer harddrive" + export_types = list(/obj/item/computer_hardware/hard_drive/micro) + include_subtypes = TRUE + +/datum/export/modular_part/harddrive/small + cost = 50 + unit_name = "small computer harddrive" + export_types = list(/obj/item/computer_hardware/hard_drive/small) + include_subtypes = FALSE + +/datum/export/modular_part/harddrive/normal + cost = 80 + unit_name = "computer harddrive" + export_types = list(/obj/item/computer_hardware/hard_drive) + include_subtypes = FALSE + +//Networking/Card Parts +/datum/export/modular_part/networkcard + cost = 50 + unit_name = "computer network card" + export_types = list(/obj/item/computer_hardware/network_card) + include_subtypes = TRUE + +/datum/export/modular_part/idcard + cost = 20 + unit_name = "computer ID card slot" + export_types = list(/obj/item/computer_hardware/card_slot) + include_subtypes = TRUE + +/datum/export/modular_part/intellicard + cost = 40 + unit_name = "computer intellicard slot" + export_types = list(/obj/item/computer_hardware/ai_slot) + include_subtypes = TRUE diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index 1c666a4db4d..ef779eb3c73 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -53,6 +53,12 @@ unit_name = "alien hide" export_types = list(/obj/item/stack/sheet/animalhide/xeno) +/datum/export/stack/licenseplate + cost = 25 + unit_name = "license plate" + export_types = list(/obj/item/stack/license_plates/filled) + + // Common materials. // For base materials, see materials.dm diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 7bee3017d9f..287fba69aaa 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -95,6 +95,31 @@ export_types = list(/obj/item/radio) exclude_types = list(/obj/item/radio/mech) +//Advanced/Power Tools. +/datum/export/weldingtool/experimental + cost = 90 + unit_name = "experimental welding tool" + export_types = list(/obj/item/weldingtool/experimental) + +/datum/export/jawsoflife + cost = 100 + unit_name = "jaws of life" + export_types = list(/obj/item/crowbar/power) + +/datum/export/handdrill + cost = 100 + unit_name = "hand drill" + export_types = list(/obj/item/screwdriver/power) + +/datum/export/rld_mini + cost = 150 + unit_name = "mini rapid lighting device" + export_types = list(/obj/item/construction/rld/mini) + +/datum/export/rsf + cost = 100 + unit_name = "rapid service fabricator" + export_types = list(/obj/item/rsf) /datum/export/rcd cost = 100 diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 0cdda2f8cee..ef20865ca58 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -610,7 +610,7 @@ /obj/item/clothing/suit/armor/vest/russian, /obj/item/clothing/head/helmet/rus_helmet, /obj/item/clothing/shoes/russian, - /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/tackler/combat, /obj/item/clothing/under/syndicate/rus_army, /obj/item/clothing/under/costume/soviet, /obj/item/clothing/mask/russian_balaclava, @@ -637,8 +637,8 @@ /obj/item/clothing/mask/gas/sechailer/swat, /obj/item/storage/belt/military/assault, /obj/item/storage/belt/military/assault, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat) + /obj/item/clothing/gloves/tackler/combat, + /obj/item/clothing/gloves/tackler/combat) crate_name = "swat crate" /datum/supply_pack/security/armory/wt550_single @@ -1038,6 +1038,13 @@ contains = list(/obj/item/stack/sheet/cardboard/fifty) crate_name = "cardboard sheets crate" +/datum/supply_pack/materials/license50 + name = "50 Empty License Plates" + desc = "Create a bunch of boxes." + cost = 1000 // 50 * 25 + 700 - 1000 = 950 credits profit + contains = list(/obj/item/stack/license_plates/empty/fifty) + crate_name = "empty license plate crate" + /datum/supply_pack/materials/glass50 name = "50 Glass Sheets" desc = "Let some nice light in with fifty glass sheets!" @@ -1468,7 +1475,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, /obj/item/mop, - /obj/item/twohanded/broom, + /obj/item/pushbroom, /obj/item/clothing/suit/caution, /obj/item/clothing/suit/caution, /obj/item/clothing/suit/caution, @@ -1848,11 +1855,11 @@ name = "Potted Plants Crate" desc = "Spruce up the station with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown." cost = 700 - contains = list(/obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random) + contains = list(/obj/item/kirbyplants/random, + /obj/item/kirbyplants/random, + /obj/item/kirbyplants/random, + /obj/item/kirbyplants/random, + /obj/item/kirbyplants/random) crate_name = "potted plants crate" crate_type = /obj/structure/closet/crate/hydroponics @@ -2403,7 +2410,7 @@ name = "Art Supplies" desc = "Make some happy little accidents with a rapid pipe cleaner layer, three spraycans, and lots of crayons!" cost = 1000 - contains = list(/obj/item/twohanded/rcl, + contains = list(/obj/item/rcl, /obj/item/storage/toolbox/artistic, /obj/item/toy/crayon/spraycan, /obj/item/toy/crayon/spraycan, @@ -2539,3 +2546,27 @@ /obj/item/stock_parts/subspace/ansible ) crate_name = "crate" + +///Special supply crate that generates random syndicate gear up to a determined TC value +/datum/supply_pack/misc/syndicate + name = "Assorted Syndicate Gear" + desc = "Contains a random assortment of syndicate gear." + special = TRUE ///Cannot be ordered via cargo + contains = list() + crate_name = "syndicate gear crate" + crate_type = /obj/structure/closet/crate + var/crate_value = 30 ///Total TC worth of contained uplink items + +///Generate assorted uplink items, taking into account the same surplus modifiers used for surplus crates +/datum/supply_pack/misc/syndicate/fill(obj/structure/closet/crate/C) + var/list/uplink_items = get_uplink_items(SSticker.mode) + while(crate_value) + var/category = pick(uplink_items) + var/item = pick(uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(!I.surplus || prob(100 - I.surplus)) + continue + if(crate_value < I.cost) + continue + crate_value -= I.cost + new I.item(C) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 93645c9c092..a316a4a07ef 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -695,7 +695,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "Play Admin MIDIs: [(toggles & SOUND_MIDI) ? "Enabled":"Disabled"]
" dat += "Play Lobby Music: [(toggles & SOUND_LOBBY) ? "Enabled":"Disabled"]
" - //dat += "Hear Radio Chatter: [(toggles & SOUND_RADIO) ? "Enabled":"Disabled"]
" Readd when radio chatter is fixed. + dat += "Play End of Round Sounds: [(toggles & SOUND_ENDOFROUND) ? "Enabled":"Disabled"]
" dat += "See Pull Requests: [(chat_toggles & CHAT_PULLR) ? "Enabled":"Disabled"]
" dat += "
" @@ -1780,8 +1780,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) else user.stop_sound_channel(CHANNEL_LOBBYMUSIC) - //if("hear_radio") - // toggles ^= SOUND_RADIO Readd when you fix radio chatter. + if("endofround_sounds") + toggles ^= SOUND_ENDOFROUND if("ghost_ears") chat_toggles ^= CHAT_GHOSTEARS diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c55956ef616..ec06a5b7724 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 32 +#define SAVEFILE_VERSION_MAX 33 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -53,6 +53,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(current_version < 32) //If you remove this, remove force_reset_keybindings() too. addtimer(CALLBACK(src, .proc/force_reset_keybindings), 30) //No mob available when this is run, timer allows user choice. + if(current_version < 33) + toggles |= SOUND_ENDOFROUND + /datum/preferences/proc/update_character(current_version, savefile/S) if(current_version < 19) pda_style = "mono" @@ -212,7 +215,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car buttons_locked = sanitize_integer(buttons_locked, 0, 1, initial(buttons_locked)) windowflashing = sanitize_integer(windowflashing, 0, 1, initial(windowflashing)) default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot)) - toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) + toggles = sanitize_integer(toggles, 0, (2**24)-1, initial(toggles)) clientfps = sanitize_integer(clientfps, 0, 1000, 0) parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 071096cd631..fe205bba83a 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -144,6 +144,21 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggletitlemusic)() return C.prefs.toggles & SOUND_LOBBY +TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleendofroundsounds)() + set name = "Hear/Silence End of Round Sounds" + set category = "Preferences" + set desc = "Hear Round End Sounds" + usr.client.prefs.toggles ^= SOUND_ENDOFROUND + usr.client.prefs.save_preferences() + if(usr.client.prefs.toggles & SOUND_ENDOFROUND) + to_chat(usr, "You will now hear sounds played before the server restarts.") + else + to_chat(usr, "You will no longer hear sounds played before the server restarts.") + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle End of Round Sounds", "[usr.client.prefs.toggles & SOUND_ENDOFROUND ? "Enabled" : "Disabled"]")) +/datum/verbs/menu/Settings/Sound/toggleendofroundsounds/Get_checked(client/C) + return C.prefs.toggles & SOUND_ENDOFROUND + + TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglemidis)() set name = "Hear/Silence Midis" set category = "Preferences" diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index f63415c25da..c65cdbf31df 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -464,7 +464,7 @@ permeability_coefficient = 0.01 flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH - var/vchange = 1 + var/voice_change = 1 ///This determines if the voice changer is on or off. var/datum/action/item_action/chameleon/change/chameleon_action @@ -487,15 +487,15 @@ chameleon_action.emp_randomise(INFINITY) /obj/item/clothing/mask/chameleon/attack_self(mob/user) - vchange = !vchange - to_chat(user, "The voice changer is now [vchange ? "on" : "off"]!") + voice_change = !voice_change + to_chat(user, "The voice changer is now [voice_change ? "on" : "off"]!") /obj/item/clothing/mask/chameleon/drone //Same as the drone chameleon hat, undroppable and no protection armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) // Can drones use the voice changer part? Let's not find out. - vchange = 0 + voice_change = 0 /obj/item/clothing/mask/chameleon/drone/Initialize() . = ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 302872d02b5..74284f21510 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -40,6 +40,10 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair + ///These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). + var/list/armor_list = list() + ///These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). + var/list/durability_list = list() /obj/item/clothing/Initialize() if((clothing_flags & VOICEBOX_TOGGLABLE)) @@ -151,6 +155,87 @@ how_cool_are_your_threads += "" . += how_cool_are_your_threads.Join() + if(LAZYLEN(armor_list)) + armor_list.Cut() + if(armor.bio) + armor_list += list("TOXIN" = armor.bio) + if(armor.bomb) + armor_list += list("EXPLOSIVE" = armor.bomb) + if(armor.bullet) + armor_list += list("BULLET" = armor.bullet) + if(armor.energy) + armor_list += list("ENERGY" = armor.energy) + if(armor.laser) + armor_list += list("LASER" = armor.laser) + if(armor.magic) + armor_list += list("MAGIC" = armor.magic) + if(armor.melee) + armor_list += list("MELEE" = armor.melee) + if(armor.rad) + armor_list += list("RADIATION" = armor.rad) + + if(LAZYLEN(durability_list)) + durability_list.Cut() + if(armor.fire) + durability_list += list("FIRE" = armor.fire) + if(armor.acid) + durability_list += list("ACID" = armor.acid) + + if(LAZYLEN(armor_list) || LAZYLEN(durability_list)) + . += "It has a tag listing its protection classes." + +/obj/item/clothing/Topic(href, href_list) + . = ..() + + if(href_list["list_armor"]) + var/list/readout = list("PROTECTION CLASSES (I-X)") + if(LAZYLEN(armor_list)) + readout += "\nARMOR" + for(var/dam_type in armor_list) + var/armor_amount = armor_list[dam_type] + readout += "\n[dam_type] [armor_to_protection_class(armor_amount)]" //e.g. BOMB IV + if(LAZYLEN(durability_list)) + readout += "\nDURABILITY" + for(var/dam_type in durability_list) + var/durability_amount = durability_list[dam_type] + readout += "\n[dam_type] [armor_to_protection_class(durability_amount)]" //e.g. FIRE II + readout += "" + + to_chat(usr, "[readout.Join()]") + +/** + * Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10 + * + * Rounds armor_value to nearest 10, divides it by 10 + * and then expresses it in roman numerals up to 10 + * Arguments: + * * armor_value - Number we're converting + */ +/obj/item/clothing/proc/armor_to_protection_class(armor_value) + armor_value = round(armor_value,10) / 10 + switch (armor_value) + if (1) + . = "I" + if (2) + . = "II" + if (3) + . = "III" + if (4) + . = "IV" + if (5) + . = "V" + if (6) + . = "VI" + if (7) + . = "VII" + if (8) + . = "VIII" + if (9) + . = "IX" + if (10 to INFINITY) + . = "X" + return . + /obj/item/clothing/obj_break(damage_flag) if(!damaged_clothes) update_clothes_damaged_state(TRUE) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 92c9ca6b3c0..683abef2a3a 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -5,7 +5,7 @@ var/hud_type = null ///Used for topic calls. Just because you have a HUD display doesn't mean you should be able to interact with stuff. var/hud_trait = null - + /obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot) ..() @@ -73,6 +73,7 @@ desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits." icon_state = "diagnostichud" hud_type = DATA_HUD_DIAGNOSTIC_BASIC + hud_trait = TRAIT_DIAGNOSTIC_HUD glass_colour_type = /datum/client_colour/glass_colour/lightorange /obj/item/clothing/glasses/hud/diagnostic/night @@ -223,3 +224,21 @@ if(. & EMP_PROTECT_SELF) return thermal_overload() + +/obj/item/clothing/glasses/hud/spacecop + name = "police aviators" + desc = "For thinking you look cool while brutalizing protestors and minorities." + icon_state = "bigsunglasses" + hud_type = ANTAG_HUD_GANGSTER + darkness_view = 1 + flash_protect = FLASH_PROTECTION_FLASH + tint = 1 + glass_colour_type = /datum/client_colour/glass_colour/gray + + +/obj/item/clothing/glasses/hud/spacecop/hidden // for the undercover cop + name = "sunglasses" + desc = "These sunglasses are special, and let you view potential criminals." + icon_state = "sun" + item_state = "sunglasses" + diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 2fcae87f569..80a95da7491 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -205,6 +205,15 @@ transfer_prints = FALSE carrytrait = TRAIT_QUICKER_CARRY +/obj/item/clothing/gloves/color/latex/nitrile/infiltrator + name = "infiltrator gloves" + desc = "Specialized combat gloves for carrying people around. Transfers tactical kidnapping knowledge into the user via nanochips." + icon_state = "infiltrator" + item_state = "infiltrator" + siemens_coefficient = 0 + permeability_coefficient = 0.3 + resistance_flags = FIRE_PROOF | ACID_PROOF + /obj/item/clothing/gloves/color/latex/engineering name = "tinker's gloves" desc = "Overdesigned engineering gloves that have automated construction subrutines dialed in, allowing for faster construction while worn." diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index c85e84a00ce..890a2d2ea93 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -79,6 +79,8 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE + permeability_coefficient = 0.05 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) /obj/item/clothing/gloves/color/plasmaman/black name = "black envirogloves" @@ -109,11 +111,13 @@ name = "engineering envirogloves" icon_state = "engieplasma" item_state = "engieplasma" + siemens_coefficient = 0 /obj/item/clothing/gloves/color/plasmaman/atmos name = "atmos envirogloves" icon_state = "atmosplasma" item_state = "atmosplasma" + siemens_coefficient = 0 /obj/item/clothing/gloves/color/plasmaman/explorer name = "explorer envirogloves" @@ -125,6 +129,8 @@ desc = "Covers up those scandalous boney hands." icon_state = "botanyplasma" item_state = "botanyplasma" + permeability_coefficient = 0.05 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) /obj/item/clothing/gloves/color/plasmaman/prototype name = "prototype envirogloves" @@ -135,4 +141,9 @@ name = "clown envirogloves" icon_state = "clownplasma" item_state = "clownplasma" - + +/obj/item/clothing/gloves/combat/wizard + name = "enchanted gloves" + desc = "These gloves have been enchanted with a spell that makes them electrically insulated and fireproof." + icon_state = "wizard" + item_state = "purplegloves" diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm new file mode 100644 index 00000000000..59f198d5ef3 --- /dev/null +++ b/code/modules/clothing/gloves/tacklers.dm @@ -0,0 +1,100 @@ +/obj/item/clothing/gloves/tackler + name = "gripper gloves" + desc = "Special gloves that manipulate the blood vessels in the wearer's hands, granting them the ability to launch headfirst into walls." + icon_state = "tackle" + item_state = "tackle" + transfer_prints = TRUE + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + resistance_flags = NONE + custom_premium_price = 350 + /// For storing our tackler datum so we can remove it after + var/datum/component/tackler + /// See: [/datum/component/tackler/var/stamina_cost] + var/tackle_stam_cost = 25 + /// See: [/datum/component/tackler/var/base_knockdown] + var/base_knockdown = 1 SECONDS + /// See: [/datum/component/tackler/var/range] + var/tackle_range = 4 + /// See: [/datum/component/tackler/var/min_distance] + var/min_distance = 0 + /// See: [/datum/component/tackler/var/speed] + var/tackle_speed = 1 + /// See: [/datum/component/tackler/var/skill_mod] + var/skill_mod = 0 + +/obj/item/clothing/gloves/tackler/equipped(mob/user, slot) + . = ..() + if(!ishuman(user)) + return + if(slot == ITEM_SLOT_GLOVES) + var/mob/living/carbon/human/H = user + tackler = H.AddComponent(/datum/component/tackler, stamina_cost=tackle_stam_cost, base_knockdown = base_knockdown, range = tackle_range, speed = tackle_speed, skill_mod = skill_mod, min_distance = min_distance) + +/obj/item/clothing/gloves/tackler/dropped(mob/user) + . = ..() + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.get_item_by_slot(ITEM_SLOT_GLOVES) == src) + qdel(tackler) + +/obj/item/clothing/gloves/tackler/dolphin + name = "dolphin gloves" + desc = "Sleek, aerodynamic gripper gloves that are less effective at actually performing takedowns, but more effective at letting the user sail through the hallways and cause accidents." + icon_state = "tackledolphin" + item_state = "tackledolphin" + + tackle_stam_cost = 15 + base_knockdown = 0.5 SECONDS + tackle_range = 5 + tackle_speed = 2 + min_distance = 2 + skill_mod = -2 + +/obj/item/clothing/gloves/tackler/combat + name = "gorilla gloves" + desc = "Premium quality combative gloves, heavily reinforced to give the user an edge in close combat tackles, though they are more taxing to use than normal gripper gloves. Fireproof to boot!" + icon_state = "black" + item_state = "blackgloves" + + tackle_stam_cost = 35 + base_knockdown = 1.5 SECONDS + tackle_range = 5 + skill_mod = 2 + + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + resistance_flags = NONE + +/obj/item/clothing/gloves/tackler/combat/insulated + name = "guerrilla gloves" + desc = "Superior quality combative gloves, good for performing tackle takedowns as well as absorbing electrical shocks." + siemens_coefficient = 0 + permeability_coefficient = 0.05 + +/obj/item/clothing/gloves/tackler/rocket + name = "rocket gloves" + desc = "The ultimate in high risk, high reward, perfect for when you need to stop a criminal from fifty feet away or die trying. Banned in most Spinward gridiron football and rugby leagues." + icon_state = "tacklerocket" + item_state = "tacklerocket" + + tackle_stam_cost = 50 + base_knockdown = 2 SECONDS + tackle_range = 10 + min_distance = 7 + tackle_speed = 6 + skill_mod = 7 + +/obj/item/clothing/gloves/tackler/offbrand + name = "improvised gripper gloves" + desc = "Ratty looking fingerless gloves wrapped with sticky tape. Beware anyone wearing these, for they clearly have no shame and nothing to lose." + icon_state = "fingerless" + item_state = "fingerless" + + tackle_stam_cost = 30 + base_knockdown = 1.75 SECONDS + min_distance = 2 + skill_mod = -1 diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 5b3bd1d153d..ad5b23ec36b 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -322,6 +322,19 @@ min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 30, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50) +/obj/item/clothing/head/helmet/infiltrator + name = "infiltrator helmet" + desc = "The galaxy isn't big enough for the two of us." + icon_state = "infiltrator" + item_state = "infiltrator" + armor = list("melee" = 40, "bullet" = 40, "laser" = 30, "energy" = 40, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + resistance_flags = FIRE_PROOF | ACID_PROOF + flash_protect = FLASH_PROTECTION_WELDER + flags_inv = HIDEHAIR|HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF + strip_delay = 80 + + //LightToggle /obj/item/clothing/head/helmet/ComponentInitialize() diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index edcc706e5ba..a36236cdbf3 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -8,6 +8,12 @@ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) strip_delay = 80 +/obj/item/clothing/head/spacepolice + name = "space police cap" + desc = "A blue cap for patrolling the daily beat." + icon_state = "policecap_families" + item_state = "policecap_families" + /obj/item/clothing/head/powdered_wig name = "powdered wig" desc = "A powdered wig." @@ -146,6 +152,7 @@ to_chat(user, "You can no longer speak like a pirate.") /obj/item/clothing/head/pirate/captain + name = "pirate captain hat" icon_state = "hgpiratecap" item_state = "hgpiratecap" @@ -500,3 +507,10 @@ ..() if (slot == ITEM_SLOT_HEAD) user.faction |= "goat" + +/obj/item/clothing/head/jackbros + name = "frosty hat" + desc = "Hee-ho!" + icon_state = "JackFrostHat" + item_state = "JackFrostHat" + diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 52bb2904252..63de0947574 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -261,6 +261,14 @@ add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) update_icon() +/obj/item/clothing/head/wig/afterattack(mob/living/carbon/human/target, mob/user) + . = ..() + if (istype(target) && (HAIR in target.dna.species.species_traits) && target.hairstyle != "Bald") + to_chat(user, "You adjust the [src] to look just like [target.name]'s [target.hairstyle].") + add_atom_colour("#[target.hair_color]", FIXED_COLOUR_PRIORITY) + hairstyle = target.hairstyle + update_icon() + /obj/item/clothing/head/wig/random/Initialize(mapload) hairstyle = pick(GLOB.hairstyles_list - "Bald") //Don't want invisible wig add_atom_colour("#[random_short_color()]", FIXED_COLOUR_PRIORITY) diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 5d5e4f981b2..b518cd29cbd 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -11,6 +11,38 @@ /obj/item/clothing/mask/balaclava/attack_self(mob/user) adjustmask(user) +/obj/item/clothing/mask/infiltrator + name = "infiltrator balaclava" + desc = "It makes you feel safe in your anonymity, but for a stealth outfit you sure do look obvious that you're up to no good. It seems to have a built in heads-up display." + icon_state = "syndicate_balaclava" + item_state = "syndicate_balaclava" + clothing_flags = MASKINTERNALS + flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + visor_flags_inv = HIDEFACE|HIDEFACIALHAIR + w_class = WEIGHT_CLASS_SMALL + armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 100, "acid" = 40) + resistance_flags = FIRE_PROOF | ACID_PROOF + + var/voice_unknown = FALSE ///This makes it so that your name shows up as unknown when wearing the mask. + +/obj/item/clothing/mask/infiltrator/equipped(mob/living/carbon/human/user, slot) + . = ..() + if(slot != ITEM_SLOT_MASK) + return + to_chat(user, "You roll the balaclava over your face, and a data display appears before your eyes.") + ADD_TRAIT(user, TRAIT_DIAGNOSTIC_HUD, MASK_TRAIT) + var/datum/atom_hud/H = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] + H.add_hud_to(user) + voice_unknown = TRUE + +/obj/item/clothing/mask/infiltrator/dropped(mob/living/carbon/human/user) + to_chat(user, "You pull off the balaclava, and the mask's internal hud system switches off quietly.") + REMOVE_TRAIT(user, TRAIT_DIAGNOSTIC_HUD, MASK_TRAIT) + var/datum/atom_hud/H = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] + H.remove_hud_from(user) + voice_unknown = FALSE + return ..() + /obj/item/clothing/mask/luchador name = "Luchador Mask" desc = "Worn by robust fighters, flying high to defeat their foes!" diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 48900a8c189..3fbdb5f8cea 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -59,6 +59,7 @@ id = /obj/item/card/id/ert/security suit = /obj/item/clothing/suit/space/hardsuit/ert/sec glasses = /obj/item/clothing/glasses/hud/security/sunglasses + gloves = /obj/item/clothing/gloves/tackler/combat/insulated back = /obj/item/storage/backpack/ert/security belt = /obj/item/storage/belt/security/full backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\ diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 3fc808a4a7d..89feb85e4b9 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -11,7 +11,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/officer shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated glasses = /obj/item/clothing/glasses/thermal/eyepatch ears = /obj/item/radio/headset/headset_cent/commander mask = /obj/item/clothing/mask/cigarette/cigar/havana @@ -162,7 +162,7 @@ l_pocket = /obj/item/reagent_containers/food/snacks/grown/banana r_pocket = /obj/item/bikehorn id = /obj/item/card/id - r_hand = /obj/item/twohanded/fireaxe + r_hand = /obj/item/fireaxe /datum/outfit/tunnel_clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) @@ -187,7 +187,7 @@ suit = /obj/item/clothing/suit/apron l_pocket = /obj/item/kitchen/knife r_pocket = /obj/item/scalpel - r_hand = /obj/item/twohanded/fireaxe + r_hand = /obj/item/fireaxe /datum/outfit/psycho/post_equip(mob/living/carbon/human/H) for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) @@ -244,7 +244,7 @@ uniform = /obj/item/clothing/under/rank/centcom/commander suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/headset_cent/commander glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba @@ -287,7 +287,7 @@ r_hand = /obj/item/spellbook l_hand = /obj/item/staff back = /obj/item/storage/backpack - backpack_contents = list(/obj/item/storage/box=1) + backpack_contents = list(/obj/item/storage/box/survival=1) /datum/outfit/wizard/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) @@ -322,7 +322,7 @@ uniform = /obj/item/clothing/under/costume/soviet head = /obj/item/clothing/head/pirate/captain shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/headset_cent glasses = /obj/item/clothing/glasses/thermal/eyepatch suit = /obj/item/clothing/suit/pirate/captain @@ -380,7 +380,7 @@ uniform = /obj/item/clothing/under/rank/centcom/commander suit = /obj/item/clothing/suit/space/hardsuit/deathsquad shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated mask = /obj/item/clothing/mask/gas/sechailer/swat glasses = /obj/item/clothing/glasses/hud/toggle/thermal back = /obj/item/storage/backpack/security diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm index 5b46df7f600..520c4c0f8b7 100644 --- a/code/modules/clothing/outfits/vr.dm +++ b/code/modules/clothing/outfits/vr.dm @@ -17,7 +17,7 @@ name = "Syndicate VR Operative - Basic" uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated back = /obj/item/storage/backpack id = /obj/item/card/id/syndicate belt = /obj/item/gun/ballistic/automatic/pistol diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index bc959493590..590769797eb 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -16,6 +16,14 @@ var/offset = 0 var/equipped_before_drop = FALSE var/can_be_bloody = TRUE + ///Whether these shoes have laces that can be tied/untied + var/can_be_tied = TRUE + ///Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED + var/tied = SHOES_TIED + ///How long it takes to lace/unlace these shoes + var/lace_time = 5 SECONDS + ///any alerts we have active + var/obj/screen/alert/our_alert /obj/item/clothing/shoes/ComponentInitialize() . = ..() @@ -53,6 +61,16 @@ if(bloody) . += mutable_appearance('icons/effects/blood.dmi', "shoeblood") +/obj/item/clothing/shoes/examine(mob/user) + . = ..() + + if(!ishuman(loc)) + return ..() + if(tied == SHOES_UNTIED) + . += "The shoelaces are untied." + else if(tied == SHOES_KNOTTED) + . += "The shoelaces are all knotted together." + /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() if(offset && (slot_flags & slot)) @@ -60,6 +78,9 @@ worn_y_dimension -= (offset * 2) user.update_inv_shoes() equipped_before_drop = TRUE + if(can_be_tied && tied == SHOES_UNTIED) + our_alert = user.throw_alert("shoealert", /obj/screen/alert/shoes/untied) + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE) /obj/item/clothing/shoes/proc/restore_offsets(mob/user) equipped_before_drop = FALSE @@ -67,6 +88,8 @@ worn_y_dimension = world.icon_size /obj/item/clothing/shoes/dropped(mob/user) + if(our_alert && our_alert.owner == user) + user.clear_alert("shoealert") if(offset && equipped_before_drop) restore_offsets(user) . = ..() @@ -88,3 +111,146 @@ /obj/item/proc/negates_gravity() return FALSE + +/** + * adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted + * + * In addition to setting the state, it will deal with getting rid of alerts if they exist, as well as registering and unregistering the stepping signals + * + * Arguments: + * * + * * state: SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED, depending on what you want them to become + * * user: used to check to see if we're the ones unknotting our own laces + */ +/obj/item/clothing/shoes/proc/adjust_laces(state, mob/user) + if(!can_be_tied) + return + + var/mob/living/carbon/human/our_guy + if(ishuman(loc)) + our_guy = loc + + tied = state + if(tied == SHOES_TIED) + if(our_guy) + our_guy.clear_alert("shoealert") + UnregisterSignal(src, COMSIG_SHOES_STEP_ACTION) + else + if(tied == SHOES_UNTIED && our_guy && user == our_guy) + our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE) + +/** + * handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces + * + * If you're the wearer, you want them to move towards tied-ness (knotted -> untied -> tied). If you're not, you're pranking them, so you're moving towards knotted-ness (tied -> untied -> knotted) + * + * Arguments: + * * + * * user: who is the person interacting with the shoes? + */ +/obj/item/clothing/shoes/proc/handle_tying(mob/living/carbon/human/user) + ///our_guy here is the wearer, if one exists (and he must exist, or we don't care) + var/mob/living/carbon/human/our_guy = loc + if(!istype(our_guy)) + return + + if(user == loc && tied != SHOES_TIED) // if they're our own shoes, go tie-wards + user.visible_message("[user] begins [tied ? "unknotting" : "tying"] the laces of [user.p_their()] [src.name].", "You begin [tied ? "unknotting" : "tying"] the laces of your [src.name]...") + + if(do_after(user, lace_time, needhand=TRUE, target=src)) + to_chat(user, "You [tied ? "unknot" : "tie"] the laces of your [src.name].") + if(tied == SHOES_UNTIED) + adjust_laces(SHOES_TIED, user) + else + adjust_laces(SHOES_UNTIED, user) + + else // if they're someone else's shoes, go knot-wards + if(user.mobility_flags & MOBILITY_STAND) + to_chat(user, "You must be on the floor to interact with [src]!") + return + if(tied == SHOES_KNOTTED) + to_chat(user, "The laces on [loc]'s [src.name] are already a hopelessly tangled mess!") + return + + var/mod_time = lace_time + to_chat(user, "You quietly set to work [tied ? "untying" : "knotting"] [loc]'s [src.name]...") + if(HAS_TRAIT(user, TRAIT_CLUMSY)) // based clowns trained their whole lives for this + mod_time *= 0.75 + + if(do_after(user, mod_time, needhand=TRUE, target=src)) + to_chat(user, "You [tied ? "untie" : "knot"] the laces on [loc]'s [src.name].") + if(tied == SHOES_UNTIED) + adjust_laces(SHOES_KNOTTED, user) + else + adjust_laces(SHOES_UNTIED, user) + else // if one of us moved + user.visible_message("[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!", "Ow! [our_guy] stamps on your hand!", user) + to_chat(our_guy, "You stamp on [user]'s hand! What the- they were [tied ? "knotting" : "untying"] your shoelaces!") + user.emote("scream") + var/obj/item/bodypart/ouchie = user.get_bodypart(pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + if(ouchie) + ouchie.receive_damage(15) + user.Paralyze(5) + +/** + * check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble + */ +/obj/item/clothing/shoes/proc/check_trip() + var/mob/living/carbon/human/our_guy = loc + if(!istype(our_guy)) // are they REALLY /our guy/? + return + + if(tied == SHOES_KNOTTED) + our_guy.Paralyze(5) + our_guy.Knockdown(10) + our_guy.visible_message("[our_guy] trips on [our_guy.p_their()] knotted shoelaces and falls! What a klutz!", "You trip on your knotted shoelaces and fall over!") + SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "trip", /datum/mood_event/tripped) // well we realized they're knotted now! + our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/knotted) + else if(tied == SHOES_UNTIED) + var/wiser = TRUE // did we stumble and realize our laces are undone? + switch(rand(1, 1000)) + if(1) // .1% chance to trip and fall over (note these are per step while our laces are undone) + our_guy.Paralyze(5) + our_guy.Knockdown(10) + our_guy.visible_message("[our_guy] trips on [our_guy.p_their()] untied shoelaces and falls! What a klutz!", "You trip on your untied shoelaces and fall over!") + if(2 to 5) // .4% chance to stumble and lurch forward + our_guy.throw_at(get_step(our_guy, our_guy.dir), 3, 2) + to_chat(our_guy, "You stumble on your untied shoelaces and lurch forward!") + if(6 to 13) // .7% chance to stumble and fling what we're holding + var/have_anything = FALSE + for(var/obj/item/I in our_guy.held_items) + have_anything = TRUE + our_guy.accident(I) + to_chat(our_guy, "You trip on your shoelaces a bit[have_anything ? ", flinging what you were holding" : ""]!") + if(14 to 25) // 1.3ish% chance to stumble and be a bit off balance (like being disarmed) + to_chat(our_guy, "You stumble a bit on your untied shoelaces!") + if(!our_guy.has_movespeed_modifier(/datum/movespeed_modifier/shove)) + our_guy.add_movespeed_modifier(/datum/movespeed_modifier/shove) + addtimer(CALLBACK(our_guy, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) + if(26 to 1000) + wiser = FALSE + + if(wiser) + SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "untied", /datum/mood_event/untied) // well we realized they're untied now! + our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied) + + +/obj/item/clothing/shoes/attack_hand(mob/living/carbon/human/user) + if(!istype(user)) + return ..() + if(loc == user && tied != SHOES_TIED) + handle_tying(user) + return + ..() + +/obj/item/clothing/shoes/attack_self(mob/user) + . = ..() + + to_chat(user, "You begin [tied ? "untying" : "tying"] the laces on [src]...") + if(do_after(user, lace_time, needhand=TRUE, target=src)) + to_chat(user, "You [tied ? "untie" : "tie"] the laces on [src].") + if(tied == SHOES_UNTIED) + adjust_laces(SHOES_TIED, user) + else + adjust_laces(SHOES_UNTIED, user) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index c20e1df4b76..11a3c11a769 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -17,7 +17,25 @@ resistance_flags = NONE permeability_coefficient = 0.05 //Thick soles, and covers the ankle pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + lace_time = 12 SECONDS + +/obj/item/clothing/shoes/combat/sneakboots + name = "sneakboots" + desc = "These boots have special noise cancelling soles. Perfect for stealth, if it wasn't for the color scheme." + icon_state = "sneakboots" + item_state = "sneakboots" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FIRE_PROOF | ACID_PROOF + +/obj/item/clothing/shoes/combat/sneakboots/equipped(mob/living/carbon/human/user, slot) + . = ..() + if(slot == ITEM_SLOT_FEET) + ADD_TRAIT(user, TRAIT_SILENT_FOOTSTEPS, SHOES_TRAIT) +/obj/item/clothing/shoes/combat/sneakboots/dropped(mob/living/carbon/human/user) + REMOVE_TRAIT(user, TRAIT_SILENT_FOOTSTEPS, SHOES_TRAIT) + return ..() + /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT boots" desc = "High speed, no drag combat boots." @@ -33,6 +51,7 @@ strip_delay = 5 equip_delay_other = 50 permeability_coefficient = 0.9 + can_be_tied = FALSE /obj/item/clothing/shoes/sandal/marisa desc = "A pair of magic black shoes." @@ -58,6 +77,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 75) can_be_bloody = FALSE custom_price = 600 + can_be_tied = FALSE /obj/item/clothing/shoes/galoshes/dry name = "absorbent galoshes" @@ -76,6 +96,7 @@ slowdown = SHOES_SLOWDOWN+1 pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown var/enabled_waddle = TRUE + lace_time = 20 SECONDS // how the hell do these laces even work?? /obj/item/clothing/shoes/clown_shoes/Initialize() . = ..() @@ -125,6 +146,7 @@ resistance_flags = NONE permeability_coefficient = 0.05 //Thick soles, and covers the ankle pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + can_be_tied = FALSE /obj/item/clothing/shoes/jackboots/fast slowdown = -1 @@ -140,6 +162,7 @@ heat_protection = FEET|LEGS max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + lace_time = 8 SECONDS /obj/item/clothing/shoes/workboots name = "work boots" @@ -152,6 +175,7 @@ strip_delay = 20 equip_delay_other = 40 pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + lace_time = 8 SECONDS /obj/item/clothing/shoes/workboots/mining name = "mining boots" @@ -168,6 +192,7 @@ min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT + lace_time = 10 SECONDS /obj/item/clothing/shoes/cult/alt name = "cultist boots" @@ -199,6 +224,7 @@ strip_delay = 100 equip_delay_other = 100 permeability_coefficient = 0.9 + can_be_tied = FALSE /obj/item/clothing/shoes/griffin name = "griffon boots" @@ -206,6 +232,7 @@ icon_state = "griffinboots" item_state = "griffinboots" pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + lace_time = 8 SECONDS /obj/item/clothing/shoes/bhop name = "jump boots" @@ -256,6 +283,7 @@ desc = "A giant, clunky pair of shoes crudely made out of bronze. Why would anyone wear these?" icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_treads" + lace_time = 8 SECONDS /obj/item/clothing/shoes/bronze/Initialize() . = ..() @@ -332,6 +360,7 @@ icon_state = "rus_shoes" item_state = "rus_shoes" pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes + lace_time = 8 SECONDS /obj/item/clothing/shoes/cowboy name = "cowboy boots" @@ -342,6 +371,7 @@ custom_price = 60 var/list/occupants = list() var/max_occupants = 4 + can_be_tied = FALSE /obj/item/clothing/shoes/cowboy/Initialize() . = ..() @@ -419,3 +449,16 @@ desc = "All this talk of antags, greytiding, and griefing... I just wanna grill for god's sake!" name = "grilling sandals" icon_state = "cookflops" + can_be_tied = FALSE + +/obj/item/clothing/shoes/yakuza + name = "tojo clan shoes" + desc = "Steel-toed and intimidating." + icon_state = "MajimaShoes" + item_state = "MajimaShoes_worn" + +/obj/item/clothing/shoes/jackbros + name = "frosty boots" + desc = "For when you're stepping on up to the plate." + icon_state = "JackFrostShoes" + item_state = "JackFrostShoes_worn" diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 7889c0a7cd4..1acdbae7214 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -237,6 +237,9 @@ REMOVE_TRAIT(helmet, TRAIT_NODROP, CHRONOSUIT_TRAIT) helmet.suit = null helmet = null + user.reset_perspective() + user.set_machine() + user.remote_control = null if(camera) QDEL_NULL(camera) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index aff8f601fe7..6352b1ebdb2 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -13,6 +13,7 @@ Contains: - Freedom's spacesuit (freedom from vacuum's oppression) - Carp hardsuit - Bounty hunter hardsuit + - Blackmarket combat medic hardsuit */ //Death squad armored space suits, not hardsuits! @@ -336,6 +337,11 @@ Contains: if (user.head == src) user.faction -= "carp" +/obj/item/clothing/suit/space/hardsuit/carp/old + name = "battered carp space suit" + desc = "It's covered in bite marks and scratches, yet seems to be still perfectly functional." + slowdown = 1 + /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response team helmet" desc = "A helmet worn by those who deal with paranormal threats for a living." @@ -426,3 +432,22 @@ Contains: armor = list("melee" = 60, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF + +//We can either be alive monsters or dead monsters, you choose. +/obj/item/clothing/head/helmet/space/hardsuit/combatmedic + name = "endemic combat medic helmet" + desc = "The integrated helmet of the combat medic hardsuit, this has a bright, glowing facemask." + icon_state = "hardsuit0-combatmedic" + item_state = "hardsuit0-combatmedic" + armor = list("melee" = 35, "bullet" = 10, "laser" = 20, "energy" = 30, "bomb" = 5, "bio" = 100, "rad" = 50, "fire" = 65, "acid" = 75) + hardsuit_type = "combatmedic" + +/obj/item/clothing/suit/space/hardsuit/combatmedic + name = "endemic combat medic hardsuit" + desc = "The standard issue hardsuit of infectious disease officers, before the formation of ERT teams. This model is labeled 'Veradux'." + icon_state = "combatmedic" + item_state = "combatmedic" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/combatmedic + armor = list("melee" = 35, "bullet" = 10, "laser" = 20, "energy" = 30, "bomb" = 5, "bio" = 100, "rad" = 50, "fire" = 65, "acid" = 75) + allowed = list(/obj/item/gun, /obj/item/melee/baton, /obj/item/circular_saw, /obj/item/tank/internals, /obj/item/storage/box/pillbottles,\ + /obj/item/storage/firstaid, /obj/item/stack/medical/gauze, /obj/item/stack/medical/suture, /obj/item/stack/medical/mesh, /obj/item/storage/bag/chemistry) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b28b1266b49..320119e6c91 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -172,6 +172,15 @@ . = ..() allowed = GLOB.detective_vest_allowed +/obj/item/clothing/suit/armor/vest/infiltrator + name = "infiltrator vest" + desc = "This vest appears to be made of of highly flexible materials that absorb impacts with ease." + icon_state = "infiltrator" + item_state = "infiltrator" + armor = list("melee" = 30, "bullet" = 40, "laser" = 20, "energy" = 30, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + resistance_flags = FIRE_PROOF | ACID_PROOF + strip_delay = 80 + //All of the armor below is mostly unused /obj/item/clothing/suit/armor/centcom @@ -229,6 +238,7 @@ desc = "A classic suit of plate armour, highly effective at stopping melee attacks." icon_state = "knight_green" item_state = "knight_green" + allowed = list(/obj/item/nullrod, /obj/item/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/armor/riot/knight/yellow icon_state = "knight_yellow" diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 20409af040f..949265f8337 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -1,5 +1,5 @@ //Chaplain Suit Subtypes -//If any new staple chaplain items get added, put them in these lists +//If any new staple chaplain items get added, put them in these lists /obj/item/clothing/suit/chaplainsuit allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) @@ -30,7 +30,7 @@ item_state = "bishoprobe" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - + /obj/item/clothing/suit/chaplainsuit/studentuni name = "student robe" desc = "The uniform of a bygone institute of learning." @@ -45,15 +45,15 @@ item_state = "witchhunter" body_parts_covered = CHEST|GROIN|LEGS|ARMS -/obj/item/clothing/suit/hooded/chaplainsuit/monkfrock - name = "monk's frock" +/obj/item/clothing/suit/hooded/chaplainsuit/monkhabit + name = "monk's habit" desc = "A few steps above rended sackcloth." icon_state = "monkfrock" item_state = "monkfrock" body_parts_covered = CHEST|GROIN|LEGS|ARMS - hoodtype = /obj/item/clothing/head/hooded/monkfrock - -/obj/item/clothing/head/hooded/monkfrock + hoodtype = /obj/item/clothing/head/hooded/monkhabit + +/obj/item/clothing/head/hooded/monkhabit name = "monk's hood" desc = "For when a man wants to cover up his tonsure." icon_state = "monkhood" @@ -76,7 +76,7 @@ item_state = "whiterobe" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - + /obj/item/clothing/suit/chaplainsuit/clownpriest name = "Robes of the Honkmother" desc = "Meant for a clown of the cloth." diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index fa069cc8b6e..5a6f10dd978 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -54,7 +54,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival) armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS @@ -72,7 +72,7 @@ name = "drake armour" icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/twohanded/spear) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 1e03b229879..ba7c237f8d6 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -675,7 +675,7 @@ H.remove_hud_from(user) /obj/item/clothing/head/hooded/ablative/IsReflect(def_zone) - if(!(def_zone in BODY_ZONE_HEAD)) //If not shot where ablative is covering you, you don't get the reflection bonus! + if(def_zone != BODY_ZONE_HEAD) //If not shot where ablative is covering you, you don't get the reflection bonus! return FALSE if (prob(hit_reflect_chance)) return TRUE @@ -773,3 +773,18 @@ desc = "A cool shirt for chilling on the beach." icon_state = "hawaiian_blue" item_state = "hawaiian_blue" + +/obj/item/clothing/suit/yakuza + name = "tojo clan jacket" + desc = "The jacket of a mad dog." + icon_state = "MajimaJacket" + item_state = "MajimaJacket" + body_parts_covered = ARMS + +/obj/item/clothing/suit/dutch + name = "dutch's jacket" + desc = "For those long nights on the beach in Tahiti." + icon_state = "DutchJacket" + item_state = "DutchJacket" + body_parts_covered = ARMS + diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index efd2da31dd7..fbeec1457b1 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -253,3 +253,24 @@ strip_delay = 50 sensor_mode = SENSOR_COORDS random_sensor = FALSE + +/obj/item/clothing/under/costume/jackbros + name = "jack bros outfit" + desc = "For when it's time to hee some hos." + icon_state = "JackFrostUniform" + item_state = "JackFrostUniform" + can_adjust = FALSE + +/obj/item/clothing/under/costume/yakuza + name = "tojo clan pants" + desc = "For those long nights under the traffic cone." + icon_state = "MajimaPants" + item_state = "MajimaPants" + can_adjust = FALSE + +/obj/item/clothing/under/costume/dutch + name = "dutch's suit" + desc = "You can feel a god damn plan coming on." + icon_state = "DutchUniform" + item_state = "DutchUniform" + can_adjust = FALSE diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index e59d5e325cd..b66de7aa4b3 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -229,3 +229,10 @@ body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE fitted = FEMALE_UNIFORM_TOP + +/obj/item/clothing/under/rank/security/officer/beatcop + name = "space police uniform" + desc = "A police uniform often found in the lines at donut shops." + icon_state = "spacepolice_families" + item_state = "spacepolice_families" + can_adjust = FALSE diff --git a/code/modules/clothing/under/suits.dm b/code/modules/clothing/under/suits.dm index e728709f046..f6e692ae75f 100644 --- a/code/modules/clothing/under/suits.dm +++ b/code/modules/clothing/under/suits.dm @@ -124,3 +124,12 @@ desc = "An excellent light colored suit, experts in the field stress that it should not to be confused with the inferior tan suit." icon_state = "beige_suit" item_state = "beige_suit" +/obj/item/clothing/under/suit/henchmen + name = "henchmen jumpsuit" + desc = "A very gaudy jumpsuit for a proper Henchman. Guild regulations, you understand." + icon = 'icons/obj/clothing/under/syndicate.dmi' + mob_overlay_icon = 'icons/mob/clothing/under/syndicate.dmi' + icon_state = "henchmen" + item_state = "henchmen" + body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS|HEAD + flags_inv = HIDEGLOVES|HIDESHOES|HIDEEARS|HIDEEYES|HIDEHAIR diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 089b8fcedc6..a2ab06a161c 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -20,6 +20,22 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE +/obj/item/clothing/under/syndicate/bloodred + name = "blood-red sneaksuit" + desc = "It still counts as stealth if there are no witnesses." + icon_state = "bloodred_pajamas" + item_state = "bl_suit" + armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 50, "acid" = 40) + resistance_flags = FIRE_PROOF | ACID_PROOF + can_adjust = FALSE + +/obj/item/clothing/under/syndicate/bloodred/sleepytime + name = "blood-red pajamas" + desc = "Do operatives dream of nuclear sheep?" + icon_state = "bloodred_pajamas" + item_state = "bl_suit" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) + /obj/item/clothing/under/syndicate/tacticool name = "tacticool turtleneck" desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index c276b8c1584..32452f477fc 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -28,9 +28,13 @@ if(!istype(I) || I.anchored == 1) return + if(SEND_SIGNAL(loc, COMSIG_CONTAINS_STORAGE) && SEND_SIGNAL(I, COMSIG_CONTAINS_STORAGE)) + to_chat(user, "No matter what way you try, you can't get [I] to fit inside [src].") + return TRUE //begone infinite storage ghosts, begone from me + if(istype(I, /obj/item/evidencebag)) to_chat(user, "You find putting an evidence bag in another evidence bag to be slightly absurd.") - return 1 //now this is podracing + return TRUE //now this is podracing if(loc in I.GetAllContents()) // fixes tg #39452, evidence bags could store their own location, causing I to be stored in the bag while being present inworld still, and able to be teleported when removed. to_chat(user, "You find putting [I] in [src] while it's still inside it quite difficult!") diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 27aa266a5a0..e56c7494e0b 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -30,12 +30,12 @@ var/log_object = "containing [reagentlist]" if(user.a_intent == INTENT_HARM && !C.is_mouth_covered()) reagents.trans_to(C, reagents.total_volume, transfered_by = user, method = INGEST) - C.visible_message("[user] has smothered \the [C] with \the [src]!", "[user] has smothered you with \the [src]!", "You hear some struggling and muffled cries of surprise.") + C.visible_message("[user] smothers \the [C] with \the [src]!", "[user] smothers you with \the [src]!", "You hear some struggling and muffled cries of surprise.") log_combat(user, C, "smothered", src, log_object) else reagents.reaction(C, TOUCH) reagents.clear_reagents() - C.visible_message("[user] has touched \the [C] with \the [src].") + C.visible_message("[user] touches \the [C] with \the [src].") log_combat(user, C, "touched", src, log_object) else if(istype(A) && (src in user)) diff --git a/code/modules/discord/accountlink.dm b/code/modules/discord/accountlink.dm index 72ce0c1f442..38b7453e631 100644 --- a/code/modules/discord/accountlink.dm +++ b/code/modules/discord/accountlink.dm @@ -43,3 +43,47 @@ alert(usr, "Account link started. Please ping the bot of the server you\'re currently on, followed by \"verify [usr.ckey]\" in Discord to successfully verify your account (Example: @Mr_Terry verify [usr.ckey])") // This is so people cant fill the notify list with a fuckload of ckeys SSdiscord.notify_members -= "[stored_id]" // The list uses strings because BYOND cannot handle a 17 digit integer + +// IF you have linked your account, this will trigger a verify of the user +/client/verb/verify_in_discord() + set category = "OOC" + set name = "Verify Discord Account" + set desc = "Verify or reverify your discord account against your linked ckey" + + // Safety checks + if(!CONFIG_GET(flag/sql_enabled)) + to_chat(src, "This feature requires the SQL backend to be running.") + return + + // ss is still starting + if(!SSdiscord) + to_chat(src, "The server is still starting up. Please wait before attempting to link your account!") + return + + // check that tgs is alive and well + if(!SSdiscord.enabled) + to_chat(src, "This feature requires the server is running on the TGS toolkit.") + return + + // check that this is not an IDIOT mistaking us for an attack vector + if(SSdiscord.reverify_cache[usr.ckey] == TRUE) + to_chat(src, "Thou can only do this once a round, if you're stuck seek help.") + return + SSdiscord.reverify_cache[usr.ckey] = TRUE + + // check that account is linked with discord + var/stored_id = SSdiscord.lookup_id(usr.ckey) + if(!stored_id) // Account is not linked + to_chat(usr, "Link your discord account via the linkdiscord verb in the OOC tab first"); + return + + // check for living hours requirement + var/required_living_minutes = CONFIG_GET(number/required_living_hours) * 60 + var/living_minutes = usr.client ? usr.client.get_exp_living(TRUE) : 0 + if(required_living_minutes > 0 && living_minutes < required_living_minutes) + to_chat(usr, "You must have at least [required_living_minutes] minutes of living " \ + + "playtime in a round to verify. You have [living_minutes] minutes. Play more!") + return + + // honey its time for your role flattening + SSdiscord.grant_role(stored_id) diff --git a/code/modules/discord/tgs_commands.dm b/code/modules/discord/tgs_commands.dm index 124da4a068f..1b8a82f2c2f 100644 --- a/code/modules/discord/tgs_commands.dm +++ b/code/modules/discord/tgs_commands.dm @@ -20,12 +20,11 @@ /datum/tgs_chat_command/verify/Run(datum/tgs_chat_user/sender, params) var/lowerparams = replacetext(lowertext(params), " ", "") // Fuck spaces + var/discordid = SSdiscord.id_clean(sender.mention) if(SSdiscord.account_link_cache[lowerparams]) // First if they are in the list, then if the ckey matches - if(SSdiscord.account_link_cache[lowerparams] == "[SSdiscord.id_clean(sender.mention)]") // If the associated ID is the correct one + if(SSdiscord.account_link_cache[lowerparams] == discordid) // If the associated ID is the correct one // Link the account in the DB table SSdiscord.link_account(lowerparams) - // Role the user - SSdiscord.grant_role(lowerparams) return "Successfully linked accounts" else return "That ckey is not associated to this discord account. If someone has used your ID, please inform an administrator" diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index f76f0e50675..d1578a216d3 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -166,6 +166,7 @@ //Do not override this proc, instead use the appropiate procs. //This proc will handle the calls to the appropiate procs. /datum/round_event/process() + SHOULD_NOT_OVERRIDE(TRUE) if(!processing) return diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 284e4e8aca0..a856efc601a 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -203,7 +203,6 @@ mask_type = /obj/item/clothing/mask/breath storage_type = /obj/item/tank/internals/oxygen - /obj/machinery/loot_locator name = "Booty Locator" desc = "This sophisticated machine scans the nearby space for items of value." @@ -256,7 +255,9 @@ /obj/machinery/computer/piratepad_control name = "cargo hold control terminal" - var/status_report = "Idle" + ui_x = 600 + ui_y = 230 + var/status_report = "Ready for delivery." var/obj/machinery/piratepad/pad var/warmup_time = 100 var/sending = FALSE @@ -274,7 +275,6 @@ if (istype(I) && istype(I.buffer,/obj/machinery/piratepad)) to_chat(user, "You link [src] with [I.buffer] in [I] buffer.") pad = I.buffer - updateDialog() return TRUE /obj/machinery/computer/piratepad_control/LateInitialize() @@ -287,29 +287,44 @@ else pad = locate() in range(4,src) -/obj/machinery/computer/piratepad_control/ui_interact(mob/user) - . = ..() - var/list/t = list() - t += "
Cargo Hold Control
" - t += "Current cargo value : [points]" - t += "
" +/obj/machinery/computer/piratepad_control/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) + if(!ui) + ui = new(user, src, ui_key, "cargo_hold_terminal", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/computer/piratepad_control/ui_data(mob/user) + var/list/data = list() + data["points"] = points + data["pad"] = pad ? TRUE : FALSE + data["sending"] = sending + data["status_report"] = status_report + return data + +/obj/machinery/computer/piratepad_control/ui_act(action, params) + if(..()) + return if(!pad) - t += "
No pad located.

" - else - t += "
[status_report]
" - if(!sending) - t += "Recalculate ValueSend" - else - t += "Stop sending" + return - var/datum/browser/popup = new(user, "piratepad", name, 300, 500) - popup.set_content(t.Join()) - popup.open() + switch(action) + if("recalc") + recalc() + . = TRUE + if("send") + start_sending() + . = TRUE + if("stop") + stop_sending() + . = TRUE /obj/machinery/computer/piratepad_control/proc/recalc() if(sending) return - status_report = "Predicted value:
" + + status_report = "Predicted value: " + var/value = 0 var/datum/export_report/ex = new for(var/atom/movable/AM in get_turf(pad)) if(AM == pad) @@ -317,7 +332,12 @@ export_item_and_contents(AM, EXPORT_PIRATE | EXPORT_CARGO | EXPORT_CONTRABAND | EXPORT_EMAG, apply_elastic = FALSE, dry_run = TRUE, external_report = ex) for(var/datum/export/E in ex.total_amount) - status_report += E.total_printout(ex,notes = FALSE) + "
" + status_report += E.total_printout(ex,notes = FALSE) + status_report += " " + value += ex.total_value[E] + + if(!value) + status_report += "0" /obj/machinery/computer/piratepad_control/proc/send() if(!sending) @@ -330,14 +350,15 @@ continue export_item_and_contents(AM, EXPORT_PIRATE | EXPORT_CARGO | EXPORT_CONTRABAND | EXPORT_EMAG, apply_elastic = FALSE, delete_unsold = FALSE, external_report = ex) - status_report = "Sold:
" + status_report = "Sold: " var/value = 0 for(var/datum/export/E in ex.total_amount) var/export_text = E.total_printout(ex,notes = FALSE) //Don't want nanotrasen messages, makes no sense here. if(!export_text) continue - status_report += export_text + "
" + status_report += export_text + status_report += " " value += ex.total_value[E] if(!total_report) @@ -350,11 +371,13 @@ points += value + if(!value) + status_report += "Nothing" + pad.visible_message("[pad] activates!") flick(pad.sending_state,pad) pad.icon_state = pad.idle_state sending = FALSE - updateDialog() /obj/machinery/computer/piratepad_control/proc/start_sending() if(sending) @@ -369,24 +392,10 @@ if(!sending) return sending = FALSE - status_report = "Idle" + status_report = "Ready for delivery." pad.icon_state = pad.idle_state deltimer(sending_timer) -/obj/machinery/computer/piratepad_control/Topic(href, href_list) - if(..()) - return - if(pad) - if(href_list["recalc"]) - recalc() - if(href_list["send"]) - start_sending() - if(href_list["stop"]) - stop_sending() - updateDialog() - else - updateDialog() - /datum/export/pirate export_category = EXPORT_PIRATE diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 7ee52d5801e..bdcc6821f1f 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -17,10 +17,11 @@ /datum/round_event/shuttle_loan announceWhen = 1 endWhen = 500 - var/dispatched = 0 + var/dispatched = FALSE var/dispatch_type = 0 var/bonus_points = 10000 var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble." + var/loan_type //for logging /datum/round_event/shuttle_loan/setup() dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY, ITS_HIP_TO, MY_GOD_JC) @@ -36,13 +37,13 @@ priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") if(DEPARTMENT_RESUPPLY) priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") - thanks_msg = "The cargo shuttle should return in 5 minutes." + thanks_msg = "The cargo shuttle should return in five minutes." bonus_points = 0 if(ANTIDOTE_NEEDED) priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") if(PIZZA_DELIVERY) priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division") - thanks_msg = "The cargo shuttle should return in 5 minutes." + thanks_msg = "The cargo shuttle should return in five minutes." bonus_points = 0 if(ITS_HIP_TO) priority_announce("Cargo: One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?", "CentCom Janitorial Division") @@ -55,7 +56,7 @@ /datum/round_event/shuttle_loan/proc/loan_shuttle() priority_announce(thanks_msg, "Cargo shuttle commandeered by CentCom.") - dispatched = 1 + dispatched = TRUE var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) if(D) D.adjust_money(bonus_points) @@ -68,20 +69,30 @@ switch(dispatch_type) if(HIJACK_SYNDIE) SSshuttle.centcom_message += "Syndicate hijack team incoming." + loan_type = "Syndicate boarding party" if(RUSKY_PARTY) SSshuttle.centcom_message += "Partying Russians incoming." + loan_type = "Russian party squad" if(SPIDER_GIFT) SSshuttle.centcom_message += "Spider Clan gift incoming." + loan_type = "Shuttle full of spiders" if(DEPARTMENT_RESUPPLY) SSshuttle.centcom_message += "Department resupply incoming." + loan_type = "Resupply packages" if(ANTIDOTE_NEEDED) SSshuttle.centcom_message += "Virus samples incoming." + loan_type = "Virus shuttle" if(PIZZA_DELIVERY) SSshuttle.centcom_message += "Pizza delivery for [station_name()]" + loan_type = "Pizza delivery" if(ITS_HIP_TO) SSshuttle.centcom_message += "Biohazard cleanup incoming." + loan_type = "Shuttle full of bees" if(MY_GOD_JC) SSshuttle.centcom_message += "Live explosive ordnance incoming. Exercise extreme caution." + loan_type = "Shuttle with a ticking bomb" + + log_game("Shuttle loan event firing with type '[loan_type]'.") /datum/round_event/shuttle_loan/tick() if(dispatched) diff --git a/code/modules/events/space_dragon.dm b/code/modules/events/space_dragon.dm index 6cf69b15c0d..f4b773126ba 100644 --- a/code/modules/events/space_dragon.dm +++ b/code/modules/events/space_dragon.dm @@ -2,8 +2,8 @@ name = "Spawn Space Dragon" typepath = /datum/round_event/ghost_role/space_dragon max_occurrences = 1 - weight = 8 - earliest_start = 70 MINUTES + weight = 5 + earliest_start = 35 MINUTES min_players = 20 /datum/round_event/ghost_role/space_dragon @@ -12,10 +12,10 @@ announceWhen = 10 /datum/round_event/ghost_role/space_dragon/announce(fake) - priority_announce("It appears a lifeform with magical traces is approaching [station_name()], please stand-by.", "Lifesign Alert") + priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert") /datum/round_event/ghost_role/space_dragon/spawn_role() - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, null, ROLE_SPACE_DRAGON) if(!candidates.len) return NOT_ENOUGH_PLAYERS @@ -31,7 +31,7 @@ message_admins("No valid spawn locations found, aborting...") return MAP_ERROR - var/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/S = new ((pick(spawn_locs))) + var/mob/living/simple_animal/hostile/space_dragon/S = new (pick(spawn_locs)) player_mind.transfer_to(S) player_mind.assigned_role = "Space Dragon" player_mind.special_role = "Space Dragon" @@ -41,4 +41,3 @@ log_game("[key_name(S)] was spawned as a Space Dragon by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN - diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index b0357e2e4bc..455881be3e2 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -22,7 +22,7 @@ if(turfs.len) //Pick a turf to spawn at if we can var/turf/T = pick(turfs) - new /datum/spacevine_controller(T, pick(subtypesof(/datum/spacevine_mutation)), rand(10,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation + new /datum/spacevine_controller(T, list(pick(subtypesof(/datum/spacevine_mutation))), rand(10,100), rand(5,10), src) //spawn a controller at turf with randomized stats and a single random mutation /datum/spacevine_mutation @@ -227,13 +227,13 @@ quality = NEGATIVE /datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser) - if(prob(severity) && istype(crosser) && !isvineimmune(holder)) + if(prob(severity) && istype(crosser) && !isvineimmune(crosser)) var/mob/living/M = crosser M.adjustBruteLoss(5) to_chat(M, "You cut yourself on the thorny vines.") /datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage) - if(prob(severity) && istype(hitter) && !isvineimmune(holder)) + if(prob(severity) && istype(hitter) && !isvineimmune(hitter)) var/mob/living/M = hitter M.adjustBruteLoss(5) to_chat(M, "You cut yourself on the thorny vines.") @@ -251,7 +251,7 @@ holder.obj_integrity = holder.max_integrity /datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage) - if(I && I.get_sharpness()) + if(I?.get_sharpness()) . = expected_damage * 0.5 else . = expected_damage @@ -351,6 +351,7 @@ playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) /obj/structure/spacevine/Crossed(atom/movable/AM) + . = ..() if(!isliving(AM)) return for(var/datum/spacevine_mutation/SM in mutations) @@ -419,7 +420,6 @@ if(muts && muts.len) for(var/datum/spacevine_mutation/M in muts) M.add_mutation_to_vinepiece(SV) - return if(parent) SV.mutations |= parent.mutations var/parentcolor = parent.atom_colours[FIXED_COLOUR_PRIORITY] @@ -540,8 +540,8 @@ return TRUE /proc/isvineimmune(atom/A) - . = FALSE if(isliving(A)) var/mob/living/M = A if(("vines" in M.faction) || ("plants" in M.faction)) - . = TRUE + return TRUE + return FALSE diff --git a/code/modules/events/stray_cargo.dm b/code/modules/events/stray_cargo.dm new file mode 100644 index 00000000000..f7ff0e6bc57 --- /dev/null +++ b/code/modules/events/stray_cargo.dm @@ -0,0 +1,99 @@ +///Spawns a cargo pod containing a random cargo supply pack on a random area of the station +/datum/round_event_control/stray_cargo + name = "Stray Cargo Pod" + typepath = /datum/round_event/stray_cargo + weight = 20 + max_occurrences = 4 + earliest_start = 10 MINUTES + +///Spawns a cargo pod containing a random cargo supply pack on a random area of the station +/datum/round_event/stray_cargo + var/area/impact_area ///Randomly picked area + announceChance = 75 + var/list/possible_pack_types = list() ///List of possible supply packs dropped in the pod, if empty picks from the cargo list + var/static/list/stray_spawnable_supply_packs = list() ///List of default spawnable supply packs, filtered from the cargo list + +/datum/round_event/stray_cargo/announce(fake) + priority_announce("Stray cargo pod detected on long-range scanners. Expected location of impact: [impact_area.name].", "Collision Alert") + +/** +* Tries to find a valid area, throws an error if none are found +* Also randomizes the start timer +*/ +/datum/round_event/stray_cargo/setup() + startWhen = rand(20, 40) + impact_area = find_event_area() + if(!impact_area) + CRASH("No valid areas for cargo pod found.") + var/list/turf_test = get_area_turfs(impact_area) + if(!turf_test.len) + CRASH("Stray Cargo Pod : No valid turfs found for [impact_area] - [impact_area.type]") + + if(!stray_spawnable_supply_packs.len) + stray_spawnable_supply_packs = SSshuttle.supply_packs.Copy() + for(var/pack in stray_spawnable_supply_packs) + var/datum/supply_pack/pack_type = pack + if(initial(pack_type.special)) + stray_spawnable_supply_packs -= pack + +///Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area +/datum/round_event/stray_cargo/start() + var/list/turf/valid_turfs = get_area_turfs(impact_area) + //Only target non-dense turfs to prevent wall-embedded pods + for(var/i in valid_turfs) + var/turf/T = i + if(T.density) + valid_turfs -= T + var/turf/LZ = pick(valid_turfs) + var/pack_type + if(possible_pack_types.len) + pack_type = pick(possible_pack_types) + else + pack_type = pick(stray_spawnable_supply_packs) + var/datum/supply_pack/SP = new pack_type + var/obj/structure/closet/crate/crate = SP.generate(null) + crate.locked = FALSE //Unlock secure crates + crate.update_icon() + var/obj/structure/closet/supplypod/pod = make_pod() + new /obj/effect/DPtarget(LZ, pod, crate) + +///Handles the creation of the pod, in case it needs to be modified beforehand +/datum/round_event/stray_cargo/proc/make_pod() + var/obj/structure/closet/supplypod/S = new + return S + +///Picks an area that wouldn't risk critical damage if hit by a pod explosion +/datum/round_event/stray_cargo/proc/find_event_area() + var/static/list/allowed_areas + if(!allowed_areas) + ///Places that shouldn't explode + var/list/safe_area_types = typecacheof(list( + /area/ai_monitored/turret_protected/ai, + /area/ai_monitored/turret_protected/ai_upload, + /area/engine, + /area/shuttle) + ) + + ///Subtypes from the above that actually should explode. + var/list/unsafe_area_subtypes = typecacheof(list(/area/engine/break_room)) + allowed_areas = make_associative(GLOB.the_station_areas) - safe_area_types + unsafe_area_subtypes + var/list/possible_areas = typecache_filter_list(GLOB.sortedAreas,allowed_areas) + if (length(possible_areas)) + return pick(possible_areas) + +///A rare variant that drops a crate containing syndicate uplink items +/datum/round_event_control/stray_cargo/syndicate + name = "Stray Syndicate Cargo Pod" + typepath = /datum/round_event/stray_cargo/syndicate + weight = 6 + max_occurrences = 1 + earliest_start = 30 MINUTES + +/datum/round_event/stray_cargo/syndicate + possible_pack_types = list(/datum/supply_pack/misc/syndicate) + +///Apply the syndicate pod skin +/datum/round_event/stray_cargo/syndicate/make_pod() + var/obj/structure/closet/supplypod/S = new + S.setStyle(STYLE_SYNDICATE) + return S diff --git a/code/modules/events/wisdomcow.dm b/code/modules/events/wisdomcow.dm new file mode 100644 index 00000000000..7b814f0d83f --- /dev/null +++ b/code/modules/events/wisdomcow.dm @@ -0,0 +1,14 @@ +/datum/round_event_control/wisdomcow + name = "Wisdom cow" + typepath = /datum/round_event/wisdomcow + max_occurrences = 1 + weight = 20 + +/datum/round_event/wisdomcow/announce(fake) + priority_announce("A wise cow has been spotted in the area. Be sure to ask for her advice.", "Nanotrasen Cow Ranching Agency") + +/datum/round_event/wisdomcow/start() + var/turf/targetloc = get_random_station_turf() + new /mob/living/simple_animal/cow/wisdom(targetloc) + do_smoke(1, targetloc) + diff --git a/code/modules/events/wizard/magicarp.dm b/code/modules/events/wizard/magicarp.dm index 96a2655b4c2..7f9f3413c64 100644 --- a/code/modules/events/wizard/magicarp.dm +++ b/code/modules/events/wizard/magicarp.dm @@ -38,6 +38,9 @@ health = 50 gold_core_spawnable = NO_SPAWN random_color = FALSE + food_type = list() + tame_chance = 0 + bonus_tame_chance = 0 var/allowed_projectile_types = list(/obj/projectile/magic/change, /obj/projectile/magic/animate, /obj/projectile/magic/resurrection, /obj/projectile/magic/death, /obj/projectile/magic/teleport, /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball, /obj/projectile/magic/spellblade, /obj/projectile/magic/arcane_barrage) diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm index 4d3a4cf4b70..f8d139a45dd 100644 --- a/code/modules/fields/turf_objects.dm +++ b/code/modules/fields/turf_objects.dm @@ -29,6 +29,7 @@ return parent.field_turf_canpass(AM, src, target) /obj/effect/abstract/proximity_checker/advanced/field_turf/Crossed(atom/movable/AM) + . = ..() if(parent) return parent.field_turf_crossed(AM, src) return TRUE @@ -53,6 +54,7 @@ return parent.field_edge_canpass(AM, src, target) /obj/effect/abstract/proximity_checker/advanced/field_edge/Crossed(atom/movable/AM) + . = ..() if(parent) return parent.field_edge_crossed(AM, src) return TRUE diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index bbfcdc96b1a..f17f457ce11 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -134,6 +134,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( Show() /obj/effect/hallucination/simple/Moved(atom/OldLoc, Dir) + . = ..() Show() /obj/effect/hallucination/simple/Destroy() @@ -145,10 +146,18 @@ GLOBAL_LIST_INIT(hallucination_list, list( #define FAKE_FLOOD_EXPAND_TIME 20 #define FAKE_FLOOD_MAX_RADIUS 10 +/obj/effect/plasma_image_holder + icon_state = "nothing" + anchored = TRUE + layer = FLY_LAYER + plane = GAME_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + /datum/hallucination/fake_flood //Plasma starts flooding from the nearby vent var/turf/center var/list/flood_images = list() + var/list/flood_image_holders = list() var/list/turf/flood_turfs = list() var/image_icon = 'icons/effects/atmospherics.dmi' var/image_state = "plasma" @@ -166,10 +175,12 @@ GLOBAL_LIST_INIT(hallucination_list, list( qdel(src) return feedback_details += "Vent Coords: [center.x],[center.y],[center.z]" - var/image/plasma_image = image(image_icon,center,image_state,FLY_LAYER) + var/obj/effect/plasma_image_holder/pih = new(center) + var/image/plasma_image = image(image_icon, pih, image_state, FLY_LAYER) plasma_image.alpha = 50 plasma_image.plane = GAME_PLANE flood_images += plasma_image + flood_image_holders += pih flood_turfs += center if(target.client) target.client.images |= flood_images @@ -195,10 +206,12 @@ GLOBAL_LIST_INIT(hallucination_list, list( var/turf/T = get_step(FT, dir) if((T in flood_turfs) || !FT.CanAtmosPass(T)) continue - var/image/new_plasma = image(image_icon,T,image_state,FLY_LAYER) + var/obj/effect/plasma_image_holder/pih = new(T) + var/image/new_plasma = image(image_icon, pih, image_state, FLY_LAYER) new_plasma.alpha = 50 new_plasma.plane = GAME_PLANE flood_images += new_plasma + flood_image_holders += pih flood_turfs += T if(target.client) target.client.images |= flood_images @@ -211,6 +224,8 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images.Remove(flood_images) qdel(flood_images) flood_images = list() + qdel(flood_image_holders) + flood_image_holders = list() return ..() /obj/effect/hallucination/simple/xeno @@ -1082,6 +1097,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/lava/Crossed(atom/movable/AM) + . = ..() if(AM == target) target.adjustStaminaLoss(20) new /datum/hallucination/fire(target) @@ -1095,6 +1111,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/chasm/Crossed(atom/movable/AM) + . = ..() if(AM == target) if(istype(target, /obj/effect/dummy/phased_mob)) return @@ -1124,6 +1141,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/anomaly/Crossed(atom/movable/AM) + . = ..() if(AM == target) new /datum/hallucination/shock(target) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 5f331e5df74..a18f1bb18c0 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -513,12 +513,15 @@ volume = 20 amount_per_transfer_from_this = 5 isGlass = FALSE + /// Allows the lean sprite to display upon crafting + var/random_sprite = TRUE /obj/item/reagent_containers/food/drinks/colocup/Initialize() .=..() - icon_state = "colocup[rand(0, 6)]" pixel_x = rand(-4,4) pixel_y = rand(-4,4) + if (random_sprite) + icon_state = "colocup[rand(0, 6)]" //////////////////////////drinkingglass and shaker// //Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink @@ -574,6 +577,12 @@ isGlass = FALSE custom_price = 45 +/obj/item/reagent_containers/food/drinks/soda_cans/random/Initialize() + ..() + var/T = pick(subtypesof(/obj/item/reagent_containers/food/drinks/soda_cans) - /obj/item/reagent_containers/food/drinks/soda_cans/random) + new T(loc) + return INITIALIZE_HINT_QDEL + /obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/human/H) if(!reagents.total_volume) H.visible_message("[H] is trying to take a big sip from [src]... The can is empty!") @@ -704,7 +713,7 @@ /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game name = "Pwr Game" - desc = "The only drink with the PWR that true gamers crave." + desc = "The only drink with the PWR that true gamers crave. When a gamer talks about gamerfuel, this is what they're literally referring to." icon_state = "purple_can" list_reagents = list(/datum/reagent/consumable/pwr_game = 30) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 8b571819641..cb06bc68c2c 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -537,3 +537,62 @@ to_chat(user, "You snuff out the flame on [src].") cut_overlay(GLOB.fire_overlay) active = 0 + +/obj/item/reagent_containers/food/drinks/bottle/pruno + name = "pruno mix" + desc = "A trash bag filled with fruit, sugar, yeast, and water, pulped together into a pungent slurry to be fermented in an enclosed space, traditionally the toilet. Security would love to confiscate this, one of the many things wrong with them." + icon = 'icons/obj/janitor.dmi' + icon_state = "trashbag" + list_reagents = list(/datum/reagent/consumable/prunomix = 50) + var/fermentation_time = 30 SECONDS /// time it takes to ferment + var/fermentation_time_remaining /// for partial fermentation + var/fermentation_timer /// store the timer id of fermentation + +/obj/item/reagent_containers/food/drinks/bottle/pruno/Initialize() + . = ..() + RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/check_fermentation) + +/obj/item/reagent_containers/food/drinks/bottle/pruno/Destroy() + UnregisterSignal(src, COMSIG_MOVABLE_MOVED) + return ..() + +// Checks to see if the pruno can ferment, i.e. is it inside a structure (e.g. toilet), or a machine (e.g. washer)? +// TODO: make it so the washer spills reagents if a reagent container is in there, for now, you can wash pruno + +/obj/item/reagent_containers/food/drinks/bottle/pruno/proc/check_fermentation() + if (!(istype(loc, /obj/machinery) || istype(loc, /obj/structure))) + if(fermentation_timer) + fermentation_time_remaining = timeleft(fermentation_timer) + deltimer(fermentation_timer) + fermentation_timer = null + return + if(fermentation_timer) + return + if(!fermentation_time_remaining) + fermentation_time_remaining = fermentation_time + fermentation_timer = addtimer(CALLBACK(src, .proc/do_fermentation), fermentation_time_remaining, TIMER_UNIQUE|TIMER_STOPPABLE) + fermentation_time_remaining = null + +// actually ferment + +/obj/item/reagent_containers/food/drinks/bottle/pruno/proc/do_fermentation() + fermentation_time_remaining = null + fermentation_timer = null + if(prob(10)) + reagents.add_reagent(/datum/reagent/toxin/bad_food, 15) // closest thing we have to botulism + reagents.add_reagent(/datum/reagent/consumable/ethanol/pruno, 35) + else + reagents.add_reagent(/datum/reagent/consumable/ethanol/pruno, 50) + name = "bag of pruno" + desc = "Fermented prison wine made from fruit, sugar, and despair. You probably shouldn't drink this around Security." + icon_state = "trashbag1" // pruno releases air as it ferments, we don't want to simulate this in atmos, but we can make it look like it did + for (var/mob/living/M in view(2, get_turf(src))) // letting people and/or narcs know when the pruno is done + to_chat(M, "A pungent smell emanates from [src], like fruit puking out its guts.") + playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE) + +/obj/item/reagent_containers/food/drinks/colocup/lean + name = "lean" + desc = "A cup of that purple drank, the stuff that makes you go WHEEZY BABY." + icon_state = "lean" + list_reagents = list(/datum/reagent/consumable/lean = 50) + random_sprite = FALSE diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 2dfe521ff5a..09227e2c3d2 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -227,8 +227,6 @@ icon_state = "mayonnaise" list_reagents = list(/datum/reagent/consumable/mayonnaise = 50) - - //Food packs. To easily apply deadly toxi... delicious sauces to your food! /obj/item/reagent_containers/food/condiment/pack diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 92f44f823a8..ed2d870f436 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -279,6 +279,17 @@ . = ..() eatverb = pick("slurp","sip","inhale","drink") +/obj/item/reagent_containers/food/snacks/customizable/poutine + name = "poutine" + desc = "Fries covered in cheese curds and gravy." + icon_state = "poutine" + ingMax = 8 + custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/poutine + trash = /obj/item/trash/plate + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/medicine/antihol = 4) + filling_color = "#FFD700" + tastes = list("potato" = 3, "gravy" = 1, "squeaky cheese" = 1) + foodtype = VEGETABLES | GRAIN | FRIED diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 6f922c833e7..47a9a1867ef 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -1,6 +1,8 @@ /obj/item/reagent_containers/food/snacks/meat var/subjectname = "" var/subjectjob = null + custom_materials = list(/datum/material/meat = MINERAL_MATERIAL_AMOUNT * 4) + material_flags = MATERIAL_NO_EFFECTS //Remove this once we refactor food, prevents meat literaly being eaten twice /obj/item/reagent_containers/food/snacks/meat/slab name = "meat" diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 8f49b5286e6..841fb121686 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -42,6 +42,15 @@ customfoodfilling = 1 foodtype = GRAIN +/obj/item/reagent_containers/food/snacks/breadslice/moldy + name = "moldy bread slice" + desc = "Entire stations have been ripped apart over arguing whether this is still good to eat." + icon_state = "moldybreadslice" + customfoodfilling = 0 + bonus_reagents = list(/datum/reagent/consumable/mold = 10) + tastes = list("decaying fungus" = 1) + foodtype = GROSS + /obj/item/reagent_containers/food/snacks/store/bread/meat name = "meatbread loaf" desc = "The culinary base of every self-respecting eloquen/tg/entleman." diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 812790bc2ff..a048fb0e437 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -205,6 +205,8 @@ /obj/item/reagent_containers/food/snacks/store/cake/birthday/energy/attack(mob/living/M, mob/living/user) . = ..() + if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly + return energy_bite(M, user) /obj/item/reagent_containers/food/snacks/store/cake/birthday/energy/microwave_act(obj/machinery/microwave/M) //super sekriter club @@ -228,6 +230,8 @@ /obj/item/reagent_containers/food/snacks/cakeslice/birthday/energy/attack(mob/living/M, mob/living/user) . = ..() + if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly + return energy_bite(M, user) /obj/item/reagent_containers/food/snacks/store/cake/apple diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 694fbd55fff..ce0aef118ce 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -13,6 +13,17 @@ tastes = list("ice cream" = 1) foodtype = GRAIN | DAIRY | SUGAR +/obj/item/reagent_containers/food/snacks/strawberryicecreamsandwich + name = "strawberry ice cream sandwich" + desc = "Portable ice-cream in its own packaging of the strawberry variety." + icon = 'icons/obj/food/frozen_treats.dmi' + icon_state = "strawberryicecreamsandwich" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/ice = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/ice = 2) + tastes = list("ice cream" = 2, "berry" = 2) + foodtype = FRUIT | DAIRY | SUGAR + + /obj/item/reagent_containers/food/snacks/spacefreezy name = "space freezy" desc = "The best icecream in space." diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 53ca907afce..08a82af8663 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -726,3 +726,4 @@ filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED + diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 4d0b6971fbb..72793c9735e 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -833,3 +833,13 @@ update_icon() #undef PANCAKE_MAX_STACK + +/obj/item/reagent_containers/food/snacks/cannoli + name = "cannoli" + desc = "A sicilian treat that makes you into a wise guy." + icon_state = "cannoli" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + filling_color = "#ffffff" + tastes = list("pastry" = 1) + foodtype = GRAIN | DAIRY | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 864499a0030..8bff9db3384 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -25,6 +25,7 @@ filling_color = "#e4d4b7" tastes = list("candy" = 5, "weight loss" = 4, "insect larva" = 1) foodtype = JUNKFOOD | RAW | GROSS + custom_premium_price = 800 var/revelation = FALSE /obj/item/reagent_containers/food/snacks/candy/bronx/On_Consume(mob/living/eater) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 7ec84c9bbc8..5997debd2b8 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -139,7 +139,7 @@ if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, -6) - user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") + user.visible_message("[user] cleans \the [src].", "You clean \the [src].") dirty = 0 update_icon() else @@ -150,7 +150,7 @@ var/obj/item/soap/P = O user.visible_message("[user] starts to clean \the [src].", "You start to clean \the [src]...") if(do_after(user, P.cleanspeed, target = src)) - user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") + user.visible_message("[user] cleans \the [src].", "You clean \the [src].") dirty = 0 update_icon() return TRUE @@ -182,7 +182,7 @@ return FALSE ingredients += O - user.visible_message("[user] has added \a [O] to \the [src].", "You add [O] to \the [src].") + user.visible_message("[user] adds \a [O] to \the [src].", "You add [O] to \the [src].") return ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 8300a033c70..4c2234ed68b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -42,7 +42,9 @@ . += "The status display reads: This unit can hold a maximum of [max_n_of_items] items." /obj/machinery/smartfridge/update_icon_state() + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) if(!machine_stat) + SSvis_overlays.add_vis_overlay(src, icon, "smartfridge-light-mask", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) if (visible_contents) switch(contents.len) if(0) @@ -91,7 +93,7 @@ if(accept_check(O)) load(O) - user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") + user.visible_message("[user] adds \the [O] to \the [src].", "You add \the [O] to \the [src].") updateUsrDialog() if (visible_contents) update_icon() @@ -235,7 +237,7 @@ // ---------------------------- /obj/machinery/smartfridge/drying_rack name = "drying rack" - desc = "A wooden contraption, used to dry plant products, food and leather." + desc = "A wooden contraption, used to dry plant products, food and hide." icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "drying_rack" use_power = IDLE_POWER_USE @@ -313,7 +315,7 @@ var/obj/item/reagent_containers/food/snacks/S = O if(S.dried_type) return TRUE - if(istype(O, /obj/item/stack/sheet/wetleather/)) + if(istype(O, /obj/item/stack/sheet/wethide)) return TRUE return FALSE @@ -337,7 +339,7 @@ new dried(drop_location()) qdel(S) return TRUE - for(var/obj/item/stack/sheet/wetleather/WL in src) + for(var/obj/item/stack/sheet/wethide/WL in src) new /obj/item/stack/sheet/leather(drop_location(), WL.amount) qdel(WL) return TRUE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index 39589e8fa3b..f29e948adf4 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -102,3 +102,12 @@ ) result = /obj/item/reagent_containers/food/snacks/butterdog subcategory = CAT_BREAD + +/datum/crafting_recipe/food/moldybread // why would you make this? + name = "Moldy Bread" + reqs = list( + /obj/item/reagent_containers/food/snacks/breadslice/plain = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita = 1 + ) + result = /obj/item/reagent_containers/food/snacks/breadslice/moldy + subcategory = CAT_BREAD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm index 901ae81dc5d..b97b88ca438 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm @@ -133,3 +133,23 @@ /obj/item/reagent_containers/food/drinks/bottle = 1) category = CAT_DRINK +/datum/crafting_recipe/pruno + name = "pruno mix" + result = /obj/item/reagent_containers/food/drinks/bottle/pruno + time = 30 + reqs = list(/obj/item/storage/bag/trash = 1, + /obj/item/reagent_containers/food/snacks/breadslice/moldy = 1, + /obj/item/reagent_containers/food/snacks/grown = 4, + /obj/item/reagent_containers/food/snacks/candy_corn = 2, + /datum/reagent/water = 15) + category = CAT_DRINK + +/datum/crafting_recipe/lean + name = "lean" + result = /obj/item/reagent_containers/food/drinks/colocup/lean + time = 30 + reqs = list(/obj/item/reagent_containers/food/drinks/colocup = 1, + /obj/item/reagent_containers/food/snacks/gumball = 2, + /datum/reagent/medicine/morphine = 5, + /datum/reagent/consumable/space_up = 15) + category = CAT_DRINK diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm index aec81e1785f..588eb863fbd 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm @@ -13,6 +13,16 @@ result = /obj/item/reagent_containers/food/snacks/icecreamsandwich subcategory = CAT_ICE +/datum/crafting_recipe/food/strawberryicecreamsandwich + name = "Strawberry ice cream sandwich" + reqs = list( + /datum/reagent/consumable/cream = 5, + /datum/reagent/consumable/ice = 5, + /obj/item/reagent_containers/food/snacks/grown/berries = 2, + ) + result = /obj/item/reagent_containers/food/snacks/strawberryicecreamsandwich + subcategory = CAT_ICE + /datum/crafting_recipe/food/spacefreezy name ="Space freezy" reqs = list( diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 64bcb6c0ff3..2177080329c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -333,3 +333,13 @@ ) result = /obj/item/reagent_containers/food/snacks/crab_rangoon subcategory = CAT_MISCFOOD + +/datum/crafting_recipe/food/poutine + name = "Poutine" + reqs = list( + /obj/item/reagent_containers/food/snacks/fries = 1, + /obj/item/reagent_containers/food/snacks/cheesewedge = 1, + /datum/reagent/consumable/gravy = 1 + ) + result = /obj/item/reagent_containers/food/snacks/customizable/poutine + subcategory = CAT_MISCFOOD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 95f1815186b..364658dbc50 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -587,3 +587,13 @@ datum/crafting_recipe/food/donut/meat ) result = /obj/item/reagent_containers/food/snacks/honeybun subcategory = CAT_PASTRY + + /datum/crafting_recipe/food/cannoli + name = "Cannoli" + reqs = list( + /obj/item/reagent_containers/food/snacks/pastrybase = 1, + /datum/reagent/consumable/milk = 1, + /datum/reagent/consumable/sugar = 3, + ) + result = /obj/item/reagent_containers/food/snacks/cannoli + subcategory = CAT_PASTRY diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js index cb384cc7aab..2448bf94ed6 100644 --- a/code/modules/goonchat/browserassets/js/browserOutput.js +++ b/code/modules/goonchat/browserassets/js/browserOutput.js @@ -79,12 +79,6 @@ function clamp(val, min, max) { return Math.max(min, Math.min(val, max)) } -function outerHTML(el) { - var wrap = document.createElement('div'); - wrap.appendChild(el.cloneNode(true)); - return wrap.innerHTML; -} - //Polyfill for fucking date now because of course IE8 and below don't support it if (!Date.now) { Date.now = function now() { @@ -183,57 +177,62 @@ function replaceRegex() { $(this).removeAttr('replaceRegex'); } -//Actually turns the highlight term match into appropriate html -function addHighlightMarkup(match) { +// Get a highlight markup span +function createHighlightMarkup() { var extra = ''; if (opts.highlightColor) { - extra += ' style="background-color: '+opts.highlightColor+'"'; + extra += ' style="background-color: ' + opts.highlightColor + '"'; } - return ''+match+''; + return ''; } -//Highlights words based on user settings -function highlightTerms(el) { - if (el.children.length > 0) { - for(var h = 0; h < el.children.length; h++){ - highlightTerms(el.children[h]); +// Get all child text nodes that match a regex pattern +function getTextNodes(elem, pattern) { + var result = $([]); + $(elem).contents().each(function(idx, child) { + if (child.nodeType === 3 && /\S/.test(child.nodeValue) && pattern.test(child.nodeValue)) { + result = result.add(child); } - } - - var hasTextNode = false; - for (var node = 0; node < el.childNodes.length; node++) - { - if (el.childNodes[node].nodeType === 3) - { - hasTextNode = true; - break; + else { + result = result.add(getTextNodes(child, pattern)); } - } + }); + return result; +} - if (hasTextNode) { //If element actually has text - var newText = ''; - for (var c = 0; c < el.childNodes.length; c++) { //Each child element - if (el.childNodes[c].nodeType === 3) { //Is it text only? - var words = el.childNodes[c].data.split(' '); - for (var w = 0; w < words.length; w++) { //Each word in the text - var newWord = null; - for (var i = 0; i < opts.highlightTerms.length; i++) { //Each highlight term - if (opts.highlightTerms[i] && words[w].toLowerCase().indexOf(opts.highlightTerms[i].toLowerCase()) > -1) { //If a match is found - newWord = words[w].replace("<", "<").replace(new RegExp(opts.highlightTerms[i], 'gi'), addHighlightMarkup); - break; - } - if (window.console) - console.log(newWord) - } - newText += newWord || words[w].replace("<", "<"); - newText += w >= words.length ? '' : ' '; - } - } else { //Every other type of element - newText += outerHTML(el.childNodes[c]); +// Highlight all text terms matching the registered regex patterns +function highlightTerms(el) { + var pattern = new RegExp("(" + opts.highlightTerms.join('|') + ")", 'gi'); + var nodes = getTextNodes(el, pattern); + + nodes.each(function (idx, node) { + var content = $(node).text(); + var parent = $(node).parent(); + var pre = $(node.previousSibling); + $(node).remove(); + content.split(pattern).forEach(function (chunk) { + // Get our highlighted span/text node + var toInsert = null; + if (pattern.test(chunk)) { + var tmpElem = $(createHighlightMarkup()); + tmpElem.text(chunk); + toInsert = tmpElem; } - } - el.innerHTML = newText; - } + else { + toInsert = document.createTextNode(chunk); + } + + // Insert back into our element + if (pre.length == 0) { + var result = parent.prepend(toInsert); + pre = $(result[0].firstChild); + } + else { + pre.after(toInsert); + pre = $(pre[0].nextSibling); + } + }); + }); } function iconError(E) { @@ -421,7 +420,7 @@ function output(message, flag) { //Actually do the snap //Stuff we can do after the message shows can go here, in the interests of responsiveness if (opts.highlightTerms && opts.highlightTerms.length > 0) { - highlightTerms(entry); + highlightTerms($(entry)); } } @@ -756,15 +755,11 @@ $(function() { internalOutput('Loaded ping display of: '+(opts.pingDisabled ? 'hidden' : 'visible')+'', 'internal'); } if (savedConfig.shighlightTerms) { - var savedTerms = $.parseJSON(savedConfig.shighlightTerms); - var actualTerms = ''; - for (var i = 0; i < savedTerms.length; i++) { - if (savedTerms[i]) { - actualTerms += savedTerms[i] + ', '; - } - } + var savedTerms = $.parseJSON(savedConfig.shighlightTerms).filter(function (entry) { + return entry !== null && /\S/.test(entry); + }); + var actualTerms = savedTerms.length != 0 ? savedTerms.join(', ') : null; if (actualTerms) { - actualTerms = actualTerms.substring(0, actualTerms.length - 2); internalOutput('Loaded highlight strings of: ' + actualTerms+'', 'internal'); opts.highlightTerms = savedTerms; } @@ -1066,20 +1061,12 @@ $(function() { $('body').on('submit', '#highlightTermForm', function(e) { e.preventDefault(); - var count = 0; - while (count < opts.highlightLimit) { + opts.highlightTerms = []; + for (var count = 0; count < opts.highlightLimit; count++) { var term = $('#highlightTermInput'+count).val(); - if (term) { - term = term.trim(); - if (term === '') { - opts.highlightTerms[count] = null; - } else { - opts.highlightTerms[count] = term.toLowerCase(); - } - } else { - opts.highlightTerms[count] = null; + if (term !== null && /\S/.test(term)) { + opts.highlightTerms.push(term.trim().toLowerCase()); } - count++; } var color = $('#highlightColor').val(); diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 9f7c2c77658..b17e17bc789 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -6,6 +6,7 @@ // Base type. Subtypes are found in /grown dir. Lavaland-based subtypes can be found in mining/ash_flora.dm /obj/item/reagent_containers/food/snacks/grown icon = 'icons/obj/hydroponics/harvest.dmi' + name = "fresh produce" // so recipe text doesn't say 'snack' var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item. var/plantname = "" var/bitesize_mod = 0 @@ -114,7 +115,7 @@ if(trash) generate_trash(T) - visible_message("[src] has been squashed.","You hear a smack.") + visible_message("[src] is squashed.","You hear a smack.") if(seed) for(var/datum/plant_gene/trait/trait in seed.genes) trait.on_squash(src, target) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 36de8996262..70c2fd5b2da 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -228,3 +228,34 @@ reagents.chem_temp = 1000 //Sets off the gunpowder reagents.handle_reactions() +// aloe +/obj/item/seeds/aloe + name = "pack of aloe seeds" + desc = "These seeds grow into aloe." + icon_state = "seed-aloe" + species = "aloe" + plantname = "Aloe" + product = /obj/item/reagent_containers/food/snacks/grown/aloe + lifespan = 60 + endurance = 25 + maturation = 4 + production = 4 + yield = 6 + growthstages = 5 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) + +/obj/item/reagent_containers/food/snacks/grown/aloe + seed = /obj/item/seeds/aloe + name = "aloe" + desc = "Cut leaves from the aloe plant." + icon_state = "aloe" + filling_color = "#90EE90" + bitesize_mod = 5 + foodtype = VEGETABLES + juice_results = list(/datum/reagent/consumable/aloejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/tequila + +/obj/item/reagent_containers/food/snacks/grown/aloe/microwave_act(obj/machinery/microwave/M) + new /obj/item/stack/medical/aloe(drop_location(), 2) + qdel(src) diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index ac171b4e45c..10a4d04fdb3 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -28,7 +28,7 @@ /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) if(I.get_sharpness()) to_chat(user, "You sharpen the carrot into a shiv with [I].") - var/obj/item/kitchen/knife/carrotshiv/Shiv = new /obj/item/kitchen/knife/carrotshiv + var/obj/item/kitchen/knife/shiv/carrot/Shiv = new /obj/item/kitchen/knife/shiv/carrot remove_item_from_storage(user) qdel(src) user.put_in_hands(Shiv) diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index a85b7ba05e3..d5e6a33ff2e 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -246,6 +246,7 @@ StartBurning() /obj/structure/bonfire/Crossed(atom/movable/AM) + . = ..() if(burning & !grill) Burn() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 47d252e5bc1..eba43ee38c0 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -76,6 +76,7 @@ resistance_flags = FLAMMABLE /obj/item/cultivator/rake/Crossed(atom/movable/AM) + . = ..() if(!ishuman(AM)) return var/mob/living/carbon/human/H = AM diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 756a695c95a..40566cfe5f8 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -138,7 +138,7 @@ ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION, - ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY, + ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY, ACCESS_PSYCHOLOGY, ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS, ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_PHARMACY, ACCESS_RC_ANNOUNCE, @@ -170,7 +170,7 @@ if(2) //security return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_HOS) if(3) //medbay - return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_CMO, ACCESS_PHARMACY) //WaspStation Edit - Gen/Sci Split + return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_CMO, ACCESS_PHARMACY, ACCESS_PSYCHOLOGY) //WaspStation Edit - Gen/Sci Split if(4) //research return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MECH_SCIENCE, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK) if(5) //engineering and maintenance @@ -275,6 +275,8 @@ return "Robotics" if(ACCESS_VIROLOGY) return "Virology" + if(ACCESS_PSYCHOLOGY) + return "Psychology" if(ACCESS_CMO) return "CMO Office" if(ACCESS_QM) @@ -363,14 +365,14 @@ /proc/get_all_jobs() return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", - "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Prisoner", //WaspStation Edit - Brig Phys / Lieutenant + "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Prisoner", "Psychologist", //WaspStation Edit - Brig Phys / Lieutenant "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Lieutenant") //WaspStation Edit - Brig Phys / Lieutenant /proc/get_all_job_icons() //For all existing HUD icons - return get_all_jobs() + list("Prisoner", "Emergency Response Team Commander", "Security Response Officer", "Engineering Response Officer", "Medical Response Officer", "Entertainment Response Officer", "Religious Response Officer", "Janitorial Response Officer", "Death Commando") + return get_all_jobs() + list("Emergency Response Team Commander", "Security Response Officer", "Engineering Response Officer", "Medical Response Officer", "Entertainment Response Officer", "Religious Response Officer", "Janitorial Response Officer", "Death Commando") /proc/get_all_centcom_jobs() - return list("Central Command","VIP Guest","Custodian","Thunderdome Overseer","CentCom Official","Medical Officer","Research Officer","Special Ops Officer","Admiral","CentCom Commander","CentCom Bartender") + return list("Central Command","VIP Guest","Custodian","Thunderdome Overseer","CentCom Official","Medical Officer","Research Officer","Special Ops Officer","Admiral","CentCom Commander","CentCom Bartender","Private Security Force") /obj/item/proc/GetJobName() //Used in secHUD icon generation var/obj/item/card/id/I = GetID() diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 49df71d2aee..193bafdd652 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -124,7 +124,7 @@ GLOBAL_PROTECT(exp_to_update) /client/proc/get_exp_living(pure_numeric = FALSE) if(!prefs.exp) - return "No data" + return pure_numeric ? 0 : "No data" var/exp_living = text2num(prefs.exp[EXP_TYPE_LIVING]) return pure_numeric ? exp_living : get_exp_format(exp_living) diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index d1b72f5d5ac..7068f6f4e82 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -22,12 +22,12 @@ /datum/job/chaplain/after_spawn(mob/living/H, mob/M) . = ..() - if(H.mind) - H.mind.isholy = TRUE var/obj/item/storage/book/bible/booze/B = new if(GLOB.religion) + if(H.mind) + H.mind.holy_role = HOLY_ROLE_PRIEST B.deity_name = GLOB.deity B.name = GLOB.bible_name B.icon_state = GLOB.bible_icon_state @@ -37,7 +37,11 @@ var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod var/obj/item/nullrod/N = new nrt(H) H.put_in_hands(N) + if(GLOB.religious_sect) + GLOB.religious_sect.on_conversion(H) return + if(H.mind) + H.mind.holy_role = HOLY_ROLE_HIGHPRIEST var/new_religion = DEFAULT_RELIGION if(M.client && M.client.prefs.custom_names["religion"]) diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 37d4a66003c..5b27f16e16c 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -19,10 +19,10 @@ outfit = /datum/outfit/job/cmo - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, //WaspStation edit - Gen/Sci Split + access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, //WaspStation edit - Gen/Sci Split ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, //WaspStation edit - Gen/Sci Split + minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, //WaspStation edit - Gen/Sci Split ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) paycheck = PAYCHECK_COMMAND diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index ec949319367..f55950752af 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -21,14 +21,14 @@ outfit = /datum/outfit/job/head_of_personnel access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_LIEUTENANT) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm new file mode 100644 index 00000000000..0acdb5ea2a2 --- /dev/null +++ b/code/modules/jobs/job_types/psychologist.dm @@ -0,0 +1,38 @@ +/* Wasp Edit - Fuck Psychologists. +/datum/job/psychologist + title = "Psychologist" + flag = PSYCHOLOGIST + department_head = list("Head of Personnel","Chief Medical Officer") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel and the chief medical officer" + selection_color = "#dddddd" + + outfit = /datum/outfit/job/psychologist + + access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY) + minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SRV + + display_order = JOB_DISPLAY_ORDER_PSYCHOLOGIST + +/datum/outfit/job/psychologist + name = "Psychologist" + jobtype = /datum/job/psychologist + + ears = /obj/item/radio/headset/headset_srvmed + uniform = /obj/item/clothing/under/suit/black + shoes = /obj/item/clothing/shoes/laceup + id = /obj/item/card/id + belt = /obj/item/pda/medical + pda_slot = ITEM_SLOT_BELT + l_hand = /obj/item/clipboard + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + +*/ diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index e3b957fb57f..90a7b4e9773 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(civilian_positions, list( "Cook", "Janitor", "Curator", + "Psychologist", "Lawyer", "Chaplain", "Clown", diff --git a/code/modules/jobs/map_changes/map_changes.dm b/code/modules/jobs/map_changes/map_changes.dm index 506a8343c5d..a1e7e1adecc 100644 --- a/code/modules/jobs/map_changes/map_changes.dm +++ b/code/modules/jobs/map_changes/map_changes.dm @@ -2,3 +2,9 @@ #include "..\..\..\..\_maps\map_files\PubbyStation\job_changes.dm" #undef JOB_MODIFICATION_MAP_NAME + +#include "..\..\..\..\_maps\map_files\BoxStation\job_changes.dm" +#undef JOB_MODIFICATION_MAP_NAME + +#include "..\..\..\..\_maps\map_files\Donutstation\job_changes.dm" +#undef JOB_MODIFICATION_MAP_NAME diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 11af847b382..22a45a8f096 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -299,6 +299,11 @@ Key procs spoken_languages = list(/datum/language/swarmer = list(LANGUAGE_ATOM)) blocked_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) +/datum/language_holder/venus + understood_languages = list(/datum/language/sylvan = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/sylvan = list(LANGUAGE_ATOM)) + blocked_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + /datum/language_holder/synthetic understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/machine = list(LANGUAGE_ATOM), diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index ffe88fd4699..71e21669200 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -315,7 +315,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_TINY - var/obj/machinery/computer/libraryconsole/bookmanagement/computer //Associated computer - Modes 1 to 3 use this + var/obj/machinery/computer/bookmanagement/computer //Associated computer - Modes 1 to 3 use this var/obj/item/book/book //Currently scanned book var/mode = 0 //0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index a589d35b344..c658c906fd8 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -70,7 +70,7 @@ /obj/machinery/computer/libraryconsole/Topic(href, href_list) . = ..() - if(..()) + if(.) usr << browse(null, "window=publiclibrary") onclose(usr, "publiclibrary") return @@ -162,14 +162,21 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums // TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such // It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. // It's December 25th, 2014, and this is STILL here, and it's STILL relevant. Kill me -/obj/machinery/computer/libraryconsole/bookmanagement +/obj/machinery/computer/bookmanagement name = "book inventory management console" desc = "Librarian's command station." - screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" pass_flags = PASSTABLE + + icon_state = "oldcomp" + icon_screen = "library" + icon_keyboard = null + circuit = /obj/item/circuitboard/computer/libraryconsole + + var/screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book + var/arcanecheckout = 0 var/buffer_book var/buffer_mob @@ -182,7 +189,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/page = 1 //current page of the external archives var/cooldown = 0 -/obj/machinery/computer/libraryconsole/bookmanagement/proc/build_library_menu() +/obj/machinery/computer/bookmanagement/proc/build_library_menu() if(libcomp_menu) return load_library_db_to_cache() @@ -198,13 +205,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums libcomp_menu[page] = "" libcomp_menu[page] += "
\n" -/obj/machinery/computer/libraryconsole/bookmanagement/Initialize() +/obj/machinery/computer/bookmanagement/Initialize() . = ..() if(circuit) circuit.name = "Book Inventory Management Console (Machine Board)" - circuit.build_path = /obj/machinery/computer/libraryconsole/bookmanagement + circuit.build_path = /obj/machinery/computer/bookmanagement -/obj/machinery/computer/libraryconsole/bookmanagement/ui_interact(mob/user) +/obj/machinery/computer/bookmanagement/ui_interact(mob/user) . = ..() var/dat = "" // switch(screenstate) @@ -316,17 +323,17 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() -/obj/machinery/computer/libraryconsole/bookmanagement/proc/findscanner(viewrange) +/obj/machinery/computer/bookmanagement/proc/findscanner(viewrange) for(var/obj/machinery/libraryscanner/S in range(viewrange, get_turf(src))) return S return null -/obj/machinery/computer/libraryconsole/bookmanagement/proc/print_forbidden_lore(mob/user) +/obj/machinery/computer/bookmanagement/proc/print_forbidden_lore(mob/user) new /obj/item/melee/cultblade/dagger(get_turf(src)) to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) -/obj/machinery/computer/libraryconsole/bookmanagement/attackby(obj/item/W, mob/user, params) +/obj/machinery/computer/bookmanagement/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/barcodescanner)) var/obj/item/barcodescanner/scanner = W scanner.computer = src @@ -335,11 +342,11 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums else return ..() -/obj/machinery/computer/libraryconsole/bookmanagement/emag_act(mob/user) +/obj/machinery/computer/bookmanagement/emag_act(mob/user) if(density && !(obj_flags & EMAGGED)) obj_flags |= EMAGGED -/obj/machinery/computer/libraryconsole/bookmanagement/Topic(href, href_list) +/obj/machinery/computer/bookmanagement/Topic(href, href_list) if(..()) usr << browse(null, "window=library") onclose(usr, "library") diff --git a/code/modules/lighting/emissive_blocker.dm b/code/modules/lighting/emissive_blocker.dm new file mode 100644 index 00000000000..b69a474009e --- /dev/null +++ b/code/modules/lighting/emissive_blocker.dm @@ -0,0 +1,44 @@ +/** + * Internal atom that copies an appearance on to the blocker plane + * + * Copies an appearance vis render_target and render_source on to the emissive blocking plane. + * This means that the atom in question will block any emissive sprites. + * This should only be used internally. If you are directly creating more of these, you're + * almost guaranteed to be doing something wrong. + */ +/atom/movable/emissive_blocker + name = "" + plane = EMISSIVE_BLOCKER_PLANE + layer = EMISSIVE_BLOCKER_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + //Why? + //render_targets copy the transform of the target as well, but vis_contents also applies the transform + //to what's in it. Applying RESET_TRANSFORM here makes vis_contents not apply the transform. + //Since only render_target handles transform we don't get any applied transform "stacking" + appearance_flags = RESET_TRANSFORM + +/atom/movable/emissive_blocker/Initialize(mapload, source) + . = ..() + verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage? + + render_source = source + +/atom/movable/emissive_blocker/ex_act(severity) + return FALSE + +/atom/movable/emissive_blocker/singularity_act() + return + +/atom/movable/emissive_blocker/singularity_pull() + return + +/atom/movable/emissive_blocker/blob_act() + return + +/atom/movable/emissive_blocker/onTransitZ() + return + +//Prevents people from moving these after creation, because they shouldn't be. +/atom/movable/emissive_blocker/forceMove(atom/destination, no_tp=FALSE, harderforce = FALSE) + if(harderforce) + return ..() diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index e7d7fd4898d..cecd61091bf 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -138,6 +138,7 @@ // Do not call except via load() above. /datum/parsed_map/proc/_load_impl(x_offset = 1, y_offset = 1, z_offset = world.maxz + 1, cropMap = FALSE, no_changeturf = FALSE, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, placeOnTop = FALSE) + PRIVATE_PROC(TRUE) var/list/areaCache = list() var/list/modelCache = build_cache(no_changeturf) var/space_key = modelCache[SPACE_KEY] diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index cd30316fa41..d1d52673f78 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -1,5 +1,5 @@ /*********************Mining Hammer****************/ -/obj/item/twohanded/kinetic_crusher +/obj/item/kinetic_crusher icon = 'icons/obj/mining.dmi' icon_state = "crusher" item_state = "crusher0" @@ -11,8 +11,6 @@ force = 0 //You can't hit stuff unless wielded w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK - force_unwielded = 0 - force_wielded = 20 throwforce = 5 throw_speed = 4 armour_penetration = 10 @@ -28,16 +26,31 @@ var/backstab_bonus = 30 var/light_on = FALSE var/brightness_on = 5 + var/wielded = FALSE // track wielded status on item -/obj/item/twohanded/kinetic_crusher/Initialize() +/obj/item/kinetic_crusher/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + +/obj/item/kinetic_crusher/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it + AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=20) -/obj/item/twohanded/kinetic_crusher/Destroy() +/obj/item/kinetic_crusher/Destroy() QDEL_LIST(trophies) return ..() -/obj/item/twohanded/kinetic_crusher/examine(mob/living/user) +/// triggered on wield of two handed item +/obj/item/kinetic_crusher/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/kinetic_crusher/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + +/obj/item/kinetic_crusher/examine(mob/living/user) . = ..() . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage." . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]." @@ -45,7 +58,7 @@ var/obj/item/crusher_trophy/T = t . += "It has \a [T] attached, which causes [T.effect_desc()]." -/obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/living/user) +/obj/item/kinetic_crusher/attackby(obj/item/I, mob/living/user) if(I.tool_behaviour == TOOL_CROWBAR) if(LAZYLEN(trophies)) to_chat(user, "You remove [src]'s trophies.") @@ -61,7 +74,7 @@ else return ..() -/obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) +/obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) if(!wielded) to_chat(user, "[src] is too heavy to use with one hand! You fumble and drop everything.") user.drop_all_held_items() @@ -76,7 +89,7 @@ if(!QDELETED(C) && !QDELETED(target)) C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did -/obj/item/twohanded/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) +/obj/item/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) . = ..() if(!wielded) return @@ -123,28 +136,28 @@ C.total_damage += detonation_damage L.apply_damage(detonation_damage, BRUTE, blocked = def_check) -/obj/item/twohanded/kinetic_crusher/proc/Recharge() +/obj/item/kinetic_crusher/proc/Recharge() if(!charged) charged = TRUE update_icon() playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, TRUE) -/obj/item/twohanded/kinetic_crusher/ui_action_click(mob/user, actiontype) +/obj/item/kinetic_crusher/ui_action_click(mob/user, actiontype) light_on = !light_on playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) update_brightness(user) update_icon() -/obj/item/twohanded/kinetic_crusher/proc/update_brightness(mob/user = null) +/obj/item/kinetic_crusher/proc/update_brightness(mob/user = null) if(light_on) set_light(brightness_on) else set_light(0) -/obj/item/twohanded/kinetic_crusher/update_icon_state() - item_state = "crusher[wielded]" +/obj/item/kinetic_crusher/update_icon_state() + item_state = "crusher[wielded]" // this is not icon_state and not supported by 2hcomponent -/obj/item/twohanded/kinetic_crusher/update_overlays() +/obj/item/kinetic_crusher/update_overlays() . = ..() if(!charged) . += "[icon_state]_uncharged" @@ -161,7 +174,7 @@ flag = "bomb" range = 6 log_override = TRUE - var/obj/item/twohanded/kinetic_crusher/hammer_synced + var/obj/item/kinetic_crusher/hammer_synced /obj/projectile/destabilizer/Destroy() hammer_synced = null @@ -200,12 +213,12 @@ return "errors" /obj/item/crusher_trophy/attackby(obj/item/A, mob/living/user) - if(istype(A, /obj/item/twohanded/kinetic_crusher)) + if(istype(A, /obj/item/kinetic_crusher)) add_to(A, user) else ..() -/obj/item/crusher_trophy/proc/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/proc/add_to(obj/item/kinetic_crusher/H, mob/living/user) for(var/t in H.trophies) var/obj/item/crusher_trophy/T = t if(istype(T, denied_type) || istype(src, T.denied_type)) @@ -217,7 +230,7 @@ to_chat(user, "You attach [src] to [H].") return TRUE -/obj/item/crusher_trophy/proc/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/proc/remove_from(obj/item/kinetic_crusher/H, mob/living/user) forceMove(get_turf(H)) H.trophies -= src return TRUE @@ -304,12 +317,12 @@ /obj/item/crusher_trophy/legion_skull/effect_desc() return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster" -/obj/item/crusher_trophy/legion_skull/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/legion_skull/add_to(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time -= bonus_value -/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time += bonus_value @@ -362,21 +375,19 @@ /obj/item/crusher_trophy/demon_claws/effect_desc() return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1], with 5X effect on mark detonation" -/obj/item/crusher_trophy/demon_claws/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/demon_claws/add_to(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.force += bonus_value * 0.2 - H.force_unwielded += bonus_value * 0.2 - H.force_wielded += bonus_value * 0.2 H.detonation_damage += bonus_value * 0.8 + AddComponent(/datum/component/two_handed, force_wielded=(20 + bonus_value * 0.2)) -/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.force -= bonus_value * 0.2 - H.force_unwielded -= bonus_value * 0.2 - H.force_wielded -= bonus_value * 0.2 H.detonation_damage -= bonus_value * 0.8 + AddComponent(/datum/component/two_handed, force_wielded=20) /obj/item/crusher_trophy/demon_claws/on_melee_hit(mob/living/target, mob/living/user) user.heal_ordered_damage(bonus_value * 0.1, damage_heal_order) @@ -448,19 +459,19 @@ denied_type = /obj/item/crusher_trophy/king_goat /obj/item/crusher_trophy/king_goat/effect_desc() - return "you also passively recharge markers 5x as fast while equipped and do a decent amount of damage at the cost of dulling the blade" + return "you also passively recharge markers 5x as fast while this is equipped and do a decent amount of damage at the cost of dulling the blade" /obj/item/crusher_trophy/king_goat/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) marker.damage = 10 //in my testing only does damage to simple mobs so should be fine to have it high -/obj/item/crusher_trophy/king_goat/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/king_goat/add_to(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time = 3 - H.force_wielded = 5 + H.AddComponent(/datum/component/two_handed, force_wielded=5) -/obj/item/crusher_trophy/king_goat/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/king_goat/remove_from(obj/item/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time = 15 - H.force_wielded = 20 + H.AddComponent(/datum/component/two_handed, force_wielded=20) diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 386fb930a44..d1427da54c6 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -13,7 +13,7 @@ var/obj/item/organ/regenerative_core/C = M if(!istype(C, /obj/item/organ/regenerative_core)) to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() + return C.preserved() to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 5b37d8b5265..3d2dfb8fb84 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -49,7 +49,7 @@ if(15) new /obj/item/nullrod/armblade(src) if(16) - new /obj/item/guardiancreator/hive(src) + new /obj/item/guardiancreator/miner(src) if(17) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 990492992a7..4416a5fd34b 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -31,7 +31,7 @@ new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), - new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750), + new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800), @@ -191,7 +191,7 @@ new /obj/item/stack/marker_beacon/thirty(drop_location) if("Crusher Kit") new /obj/item/extinguisher/mini(drop_location) - new /obj/item/twohanded/kinetic_crusher(drop_location) + new /obj/item/kinetic_crusher(drop_location) if("Mining Conscription Kit") new /obj/item/storage/backpack/duffelbag/mining_conscript(drop_location) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index a380ae10720..06657d04af1 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -218,7 +218,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ item_state = "slag" singular_name = "slag chunk" -/obj/item/twohanded/required/gibtonite +/obj/item/gibtonite name = "gibtonite ore" desc = "Extremely explosive if struck with mining equipment, Gibtonite is often used by miners to speed up their work by using it as a mining charge. This material is illegal to possess by unauthorized personnel under space law." icon = 'icons/obj/mining.dmi' @@ -232,12 +232,16 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ var/attacher = "UNKNOWN" var/det_timer -/obj/item/twohanded/required/gibtonite/Destroy() +/obj/item/gibtonite/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, require_twohands=TRUE) + +/obj/item/gibtonite/Destroy() qdel(wires) wires = null return ..() -/obj/item/twohanded/required/gibtonite/attackby(obj/item/I, mob/user, params) +/obj/item/gibtonite/attackby(obj/item/I, mob/user, params) if(!wires && istype(I, /obj/item/assembly/igniter)) user.visible_message("[user] attaches [I] to [src].", "You attach [I] to [src].") wires = new /datum/wires/explosive/gibtonite(src) @@ -259,26 +263,26 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ primed = FALSE if(det_timer) deltimer(det_timer) - user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "You stopped the chain reaction. ...The ore's quality looks diminished.") + user.visible_message("The chain reaction stopped! ...The ore's quality looks diminished.", "You stopped the chain reaction. ...The ore's quality looks diminished.") icon_state = "Gibtonite ore" quality = GIBTONITE_QUALITY_LOW return ..() -/obj/item/twohanded/required/gibtonite/attack_self(user) +/obj/item/gibtonite/attack_self(user) if(wires) wires.interact(user) else ..() -/obj/item/twohanded/required/gibtonite/bullet_act(obj/projectile/P) +/obj/item/gibtonite/bullet_act(obj/projectile/P) GibtoniteReaction(P.firer) . = ..() -/obj/item/twohanded/required/gibtonite/ex_act() +/obj/item/gibtonite/ex_act() GibtoniteReaction(null, 1) -/obj/item/twohanded/required/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0) +/obj/item/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0) if(!primed) primed = TRUE playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,TRUE) @@ -301,7 +305,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ log_bomber(user, "has primed a", src, "for detonation", notify_admins) det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE) -/obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins) +/obj/item/gibtonite/proc/detonate(notify_admins) if(primed) switch(quality) if(GIBTONITE_QUALITY_HIGH) @@ -426,7 +430,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ var/oldloc = loc sleep(15) if(loc == oldloc && user && !user.incapacitated()) - user.visible_message("[user] has flipped [src]. It lands on [coinflip].", \ + user.visible_message("[user] flips [src]. It lands on [coinflip].", \ "You flip [src]. It lands on [coinflip].", \ "You hear the clattering of loose change.") return TRUE//did the coin flip? useful for suicide_act diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 61366a12d77..b3e74523099 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -8,11 +8,12 @@ INITIALIZE_IMMEDIATE(/mob/dead) throwforce = 0 /mob/dead/Initialize() + SHOULD_CALL_PARENT(FALSE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 tag = "mob_[next_mob_id++]" - GLOB.mob_list += src + add_to_mob_list() prepare_huds() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 06e40f7fb25..ea25ad9156d 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -129,7 +129,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) animate(src, pixel_y = 2, time = 10, loop = -1) - GLOB.dead_mob_list += src + add_to_dead_mob_list() for(var/v in GLOB.active_alternate_appearances) if(!v) @@ -894,8 +894,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/list/t_ray_images = list() var/static/list/stored_t_ray_images = list() for(var/obj/O in orange(client.view, src) ) - if(O.level != 1) - continue if(O.invisibility == INVISIBILITY_MAXIMUM) var/image/I = new(loc = get_turf(O)) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 3f7b92ca557..316a80cc0fc 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -302,6 +302,7 @@ /mob/proc/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE) //Force overrides TRAIT_NODROP for things like wizarditis and admin undress. //Use no_move if the item is just gonna be immediately moved afterward //Invdrop is used to prevent stuff in pockets dropping. only set to false if it's going to immediately be replaced + PROTECTED_PROC(TRUE) if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for TRAIT_NODROP. return TRUE diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 7df2586ec45..75ee9c53c25 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -60,7 +60,7 @@ forceMove(holder) // if we're not pulling anyone, or we can't eat anyone - if(!pullee || bloodcrawl != BLOODCRAWL_EAT) + if(!pullee || !HAS_TRAIT(src, TRAIT_BLOODCRAWL_EAT)) notransform = FALSE return diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 9aa037be739..4078be8e81a 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -63,8 +63,8 @@ var/fubar_brain = newbrain.suicided || brainmob.suiciding //brain is from a suicider if(!fubar_brain && !(newbrain.organ_flags & ORGAN_FAILING)) // the brain organ hasn't been beaten to death, nor was from a suicider. brainmob.set_stat(CONSCIOUS) //we manually revive the brain mob - GLOB.dead_mob_list -= brainmob - GLOB.alive_mob_list += brainmob + brainmob.remove_from_dead_mob_list() + brainmob.add_to_alive_mob_list() else if(!fubar_brain && newbrain.organ_flags & ORGAN_FAILING) // the brain is damaged, but not from a suicider to_chat(user, "[src]'s indicator light turns yellow and its brain integrity alarm beeps softly. Perhaps you should check [newbrain] for damage.") playsound(src, "sound/machines/synth_no.ogg", 5, TRUE) @@ -108,8 +108,8 @@ brainmob.set_stat(DEAD) brainmob.emp_damage = 0 brainmob.reset_perspective() //so the brainmob follows the brain organ instead of the mmi. And to update our vision - GLOB.alive_mob_list -= brainmob //Get outta here - GLOB.dead_mob_list |= brainmob + brainmob.remove_from_alive_mob_list() //Get outta here + brainmob.add_to_dead_mob_list() brain.brainmob = brainmob //Set the brain to use the brainmob log_game("[key_name(user)] has ejected the brain of [key_name(brainmob)] from an MMI at [AREACOORD(src)]") brainmob = null //Set mmi brainmob var to null diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 83f684ee04d..cf2bf15bff9 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -244,7 +244,10 @@ loc = null //the above bits are copypaste from organ/proc/Insert, because I couldn't go through the parent here. - if(stored_mmi.brainmob) + if(!stored_mmi) + qdel(src) + + if(istype(stored_mmi, /obj/item/mmi/posibrain) && stored_mmi.brainmob) if(C.key) C.ghostize() var/mob/living/brain/B = stored_mmi.brainmob @@ -289,7 +292,7 @@ /obj/item/organ/brain/mmi_holder/posibrain/Initialize(var/obj/item/mmi/MMI) . = ..() - if(MMI) + if(MMI && istype(MMI, /obj/item/mmi/posibrain)) stored_mmi = MMI MMI.forceMove(src) else diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 49b9dcf4299..b6239db94ec 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -6,27 +6,36 @@ GLOBAL_VAR(posibrain_notify_cooldown) icon = 'icons/obj/assemblies.dmi' icon_state = "posibrain" w_class = WEIGHT_CLASS_NORMAL - var/next_ask - var/askDelay = 600 //one minute + var/ask_role = "" ///Can be set to tell ghosts what the brain will be used for + var/next_ask ///World time tick when ghost polling will be available again + var/askDelay = 600 ///Delay after polling ghosts var/searching = FALSE brainmob = null req_access = list(ACCESS_ROBOTICS) mecha = null//This does not appear to be used outside of reference in mecha.dm. braintype = "Android" - var/autoping = TRUE //if it pings on creation immediately + var/autoping = TRUE ///If it pings on creation immediately + ///Message sent to the user when polling ghosts var/begin_activation_message = "You carefully locate the manual activation switch and start the positronic brain's boot process." + ///Message sent as a visible message on success var/success_message = "The positronic brain pings, and its lights start flashing. Success!" + ///Message sent as a visible message on failure var/fail_message = "The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?" + ///Role assigned to the newly created mind var/new_role = "Positronic Brain" + ///Message sent to the player possessing the brain var/welcome_message = "ALL PAST LIVES ARE FORGOTTEN.\n\ You are a positronic brain, brought into existence aboard Space Station 13.\n\ As a synthetic intelligence, you answer to all crewmembers and the AI.\n\ Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm." + ///Visible message sent when a player possesses the brain var/new_mob_message = "The positronic brain chimes quietly." + ///Examine message when the posibrain has no mob var/dead_message = "It appears to be completely inactive. The reset light is blinking." + ///Examine message when the posibrain cannot poll ghosts due to cooldown var/recharge_message = "The positronic brain isn't ready to activate again yet! Give it some time to recharge." - var/list/possible_names //If you leave this blank, it will use the global posibrain names - var/picked_name + var/list/possible_names ///One of these names is randomly picked as the posibrain's name on possession. If left blank, it will use the global posibrain names + var/picked_name ///Picked posibrain name /obj/item/mmi/posibrain/Topic(href, href_list) if(href_list["activate"]) @@ -34,9 +43,10 @@ GLOBAL_VAR(posibrain_notify_cooldown) if(istype(ghost)) activate(ghost) +///Notify ghosts that the posibrain is up for grabs /obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) - notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, notify_volume = 75, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_POSIBRAIN, notify_suiciders = FALSE) + notify_ghosts("[name] [msg] in [get_area(src)]! [ask_role ? "Personality requested: \[[ask_role]\]" : ""]", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, notify_volume = 75, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_POSIBRAIN, notify_suiciders = FALSE) if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + askDelay @@ -57,6 +67,17 @@ GLOBAL_VAR(posibrain_notify_cooldown) update_icon() addtimer(CALLBACK(src, .proc/check_success), askDelay) +/obj/item/mmi/posibrain/AltClick(mob/living/user) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + return + var/input_seed = stripped_input(user, "Enter a personality seed", "Enter seed", ask_role, MAX_NAME_LEN) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + return + if(input_seed) + to_chat(user, "You set the personality seed to \"[input_seed]\".") + ask_role = input_seed + update_icon() + /obj/item/mmi/posibrain/proc/check_success() searching = FALSE update_icon() @@ -68,7 +89,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) else visible_message(fail_message) -//ATTACK GHOST IGNORING PARENT RETURN VALUE +///ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/item/mmi/posibrain/attack_ghost(mob/user) activate(user) @@ -81,7 +102,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) return TRUE return FALSE -//Two ways to activate a positronic brain. A clickable link in the ghost notif, or simply clicking the object itself. +///Two ways to activate a positronic brain. A clickable link in the ghost notif, or simply clicking the object itself. /obj/item/mmi/posibrain/proc/activate(mob/user) if(QDELETED(brainmob)) return @@ -116,6 +137,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) brainmob.mind.wipe_memory() update_icon() +///Moves the candidate from the ghost to the posibrain /obj/item/mmi/posibrain/proc/transfer_personality(mob/candidate) if(QDELETED(brainmob)) return @@ -130,8 +152,8 @@ GLOBAL_VAR(posibrain_notify_cooldown) to_chat(brainmob, welcome_message) brainmob.mind.assigned_role = new_role brainmob.set_stat(CONSCIOUS) - GLOB.dead_mob_list -= brainmob - GLOB.alive_mob_list += brainmob + brainmob.remove_from_dead_mob_list() + brainmob.add_to_alive_mob_list() visible_message(new_mob_message) check_success() @@ -149,6 +171,9 @@ GLOBAL_VAR(posibrain_notify_cooldown) . += "It appears to be completely inactive." else . += "[dead_message]" + if(ask_role) + . += "Current consciousness seed: \"[ask_role]\"" + . += "Alt-click to set a consciousness seed, specifying what [src] will be used for. This can help generate a personality interested in that role." /obj/item/mmi/posibrain/Initialize() . = ..() 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 dde41ced10a..b15a96b6af2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -78,7 +78,7 @@ Doesn't work on other aliens/AI.*/ if(locate(/obj/structure/alien/weeds/node) in get_turf(user)) to_chat(user, "There's already a weed node here!") return 0 - user.visible_message("[user] has planted some alien weeds!") + user.visible_message("[user] plants some alien weeds!") new/obj/structure/alien/weeds/node(user.loc) return 1 diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 4e63cbcacf1..2a439109c16 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -65,7 +65,7 @@ to_chat(user, "There's already an egg here.") return FALSE - user.visible_message("[user] has laid an egg!") + user.visible_message("[user] lays an egg!") new /obj/structure/alien/egg(user.loc) return TRUE diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index eb9133697c4..53b5afe1df4 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -89,8 +89,8 @@ Attach(M) /obj/item/clothing/mask/facehugger/Crossed(atom/target) + . = ..() HasProximity(target) - return /obj/item/clothing/mask/facehugger/on_found(mob/finder) if(stat == CONSCIOUS) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index bd6e066abdd..0f2aaa547fa 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -18,16 +18,15 @@ GLOB.carbon_list -= src /mob/living/carbon/swap_hand(held_index) + . = ..() + if(!.) + var/obj/item/held_item = get_active_held_item() + to_chat(usr, "Your other hand is too busy holding [held_item].") + return + if(!held_index) held_index = (active_hand_index % held_items.len)+1 - var/obj/item/item_in_hand = src.get_active_held_item() - if(item_in_hand) //this segment checks if the item in your hand is twohanded. - var/obj/item/twohanded/TH = item_in_hand - if(istype(TH)) - if(TH.wielded == 1) - to_chat(usr, "Your other hand is too busy holding [TH].") - return var/oindex = active_hand_index active_hand_index = held_index if(hud_used) @@ -139,20 +138,15 @@ if(HAS_TRAIT(src, TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") return - var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors - var/turf/end_T = get_turf(target) - if(start_T && end_T) - log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") - - else if(!(I.item_flags & ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP)) - thrown_thing = I - dropItemToGround(I, silent = TRUE) - - if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce) - to_chat(src, "You set [I] down gently on the ground.") - return + else + thrown_thing = I.on_thrown(src, target) if(thrown_thing) + if(isliving(thrown_thing)) + var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors + var/turf/end_T = get_turf(target) + if(start_T && end_T) + log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") visible_message("[src] throws [thrown_thing].", \ "You throw [thrown_thing].") log_message("has thrown [thrown_thing]", LOG_ATTACK) @@ -270,7 +264,7 @@ "You stop, drop, and roll!") sleep(30) if(fire_stacks <= 0) - visible_message("[src] has successfully extinguished [p_them()]self!", \ + visible_message("[src] successfully extinguishes [p_them()]self!", \ "You extinguish yourself.") ExtinguishMob() return @@ -502,9 +496,9 @@ /mob/living/carbon/update_mobility() . = ..() if(!(mobility_flags & MOBILITY_STAND)) - add_movespeed_modifier(MOVESPEED_ID_CARBON_CRAWLING, TRUE, multiplicative_slowdown = CRAWLING_ADD_SLOWDOWN) + add_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling) else - remove_movespeed_modifier(MOVESPEED_ID_CARBON_CRAWLING, TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling) //Updates the mob's health from bodyparts and mob damage variables /mob/living/carbon/updatehealth() @@ -527,9 +521,9 @@ med_hud_set_health() if(stat == SOFT_CRIT) - add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN) + add_movespeed_modifier(/datum/movespeed_modifier/carbon_softcrit) else - remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/carbon_softcrit) /mob/living/carbon/update_stamina() var/stam = getStaminaLoss() @@ -862,6 +856,7 @@ var/obj/item/I = X I.acid_level = 0 //washes off the acid on our clothes I.extinguish() //extinguishes our clothes + I.cut_overlay(GLOB.fire_overlay, TRUE) ..() /mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 2d87b2c777b..a852b103fb4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -164,8 +164,8 @@ if(M.powerlevel < 0) M.powerlevel = 0 - visible_message("The [M.name] has shocked [src]!", \ - "The [M.name] has shocked you!") + visible_message("The [M.name] shocks [src]!", \ + "The [M.name] shocks you!") do_sparks(5, TRUE, src) var/power = M.powerlevel + rand(0,3) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index caafd0bee7b..6f8ce9726f7 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -24,7 +24,7 @@ var/obj/item/clothing/head = null var/obj/item/clothing/gloves = null ///only used by humans - var/obj/item/clothing/shoes = null ///only used by humans. + var/obj/item/clothing/shoes/shoes = null ///only used by humans. var/obj/item/clothing/glasses/glasses = null ///only used by humans. var/obj/item/clothing/ears = null ///only used by humans. diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 8bba734b973..a7a683a764e 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -1,24 +1,25 @@ /mob/living/carbon/slip(knockdown_amount, obj/O, lube, paralyze, force_drop) if(movement_type & FLYING) - return 0 + return FALSE if(!(lube&SLIDE_ICE)) log_combat(src, (O ? O : get_turf(src)), "slipped on the", null, ((lube & SLIDE) ? "(LUBE)" : null)) return loc.handle_slip(src, knockdown_amount, O, lube, paralyze, force_drop) /mob/living/carbon/Process_Spacemove(movement_dir = 0) - if(..()) - return 1 if(!isturf(loc)) - return 0 + return FALSE // Do we have a jetpack implant (and is it on)? var/obj/item/organ/cyberimp/chest/thrusters/T = getorganslot(ORGAN_SLOT_THRUSTERS) - if(istype(T) && movement_dir && T.allow_thrust(0.01)) - return 1 + if(istype(T) && movement_dir && T.on) + return TRUE var/obj/item/tank/jetpack/J = get_jetpack() - if(istype(J) && (movement_dir || J.stabilizers) && J.allow_thrust(0.01, src)) - return 1 + if(istype(J) && (movement_dir || J.stabilizers) && J.on) + return TRUE + + if(..()) + return TRUE /mob/living/carbon/Move(NewLoc, direct) . = ..() diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 79c3459f12b..efaf612a73b 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -7,6 +7,7 @@ if(!gibbed) emote("deathgasp") + reagents.end_metabolization(src) . = ..() diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 9c5086acd36..e5d3200c561 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -34,6 +34,18 @@ 'sound/misc/clap3.ogg', 'sound/misc/clap4.ogg') +/datum/emote/living/carbon/crack + key = "crack" + key_third_person = "cracks" + message = "cracks their knuckles." + sound = 'sound/misc/knuckles.ogg' + cooldown = 6 SECONDS + +/datum/emote/living/carbon/crack/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional) + if(user.get_num_arms() <= 1) + return FALSE + return ..() + /datum/emote/living/carbon/gnarl key = "gnarl" key_third_person = "gnarls" diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index f2758d52fda..7b70c26d711 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,3 +1,4 @@ +GLOBAL_LIST_EMPTY(dead_players_during_shift) /mob/living/carbon/human/gib_animation() switch(dna.species.species_gibs) if("human") @@ -48,7 +49,9 @@ dizziness = 0 jitteriness = 0 - + if(client && !suiciding && !(client in GLOB.dead_players_during_shift)) + GLOB.dead_players_during_shift += client + GLOB.deaths_during_shift++ if(ismecha(loc)) var/obj/mecha/M = loc if(M.occupant == src) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index f72c85051f4..31445e30a54 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -114,7 +114,10 @@ if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) appears_dead = TRUE - if(isliving(user) && HAS_TRAIT(user, TRAIT_NAIVE)) + var/obj/item/clothing/glasses/G = get_item_by_slot(ITEM_SLOT_EYES) + var/are_we_in_weekend_at_bernies = G?.tint && buckled && istype(buckled, /obj/vehicle/ridden/wheelchair) + + if(isliving(user) && (HAS_TRAIT(user, TRAIT_NAIVE) || are_we_in_weekend_at_bernies)) just_sleeping = TRUE if(!just_sleeping) @@ -296,7 +299,7 @@ msg += "" - if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.isholy) + if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.holy_role) msg += "[t_He] [t_has] a holy aura about [t_him].\n" SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "religious_comfort", /datum/mood_event/religiously_comforted) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index dd27b50cc6e..0dc8b42ca91 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -157,8 +157,11 @@ if(ITEM_SLOT_FEET in obscured) dat += "" else - dat += "" + dat += "" if(ITEM_SLOT_GLOVES in obscured) dat += "" else @@ -167,9 +170,15 @@ if(ITEM_SLOT_ICLOTHING in obscured) dat += "" else - dat += "" + dat += "" - if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (ITEM_SLOT_ICLOTHING in obscured)) + var/obj/item/bodypart/O = get_bodypart(BODY_ZONE_CHEST) + if((w_uniform == null && !(dna && dna.species.nojumpsuit) && !(O && O.status == BODYPART_ROBOTIC)) || (ITEM_SLOT_ICLOTHING in obscured)) dat += "" dat += "" dat += "" @@ -254,6 +263,19 @@ // Display a warning if the user mocks up to_chat(src, "You feel your [pocket_side] pocket being fumbled with!") + if(href_list["toggle_uniform"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + var/obj/item/clothing/under/U = get_item_by_slot(ITEM_SLOT_ICLOTHING) + to_chat(src, "[usr.name] is trying to adjust your [U].") + if(do_mob(usr, src, U.strip_delay/2)) + to_chat(src, "[usr.name] successfully adjusted your [U].") + U.toggle_jumpsuit_adjust() + update_inv_w_uniform() + update_body() + + var/mob/living/user = usr + if(istype(user) && href_list["shoes"] && (user.mobility_flags & MOBILITY_USE)) // we need to be on the ground, so we'll be a bit looser + shoes.handle_tying(usr) + ///////HUDs/////// if(href_list["hud"]) if(!ishuman(usr)) @@ -402,16 +424,12 @@ if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return to_chat(usr, "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]") - to_chat(usr, "Minor Crimes:") - for(var/datum/data/crime/c in R.fields["mi_crim"]) - to_chat(usr, "Crime: [c.crimeName]") - to_chat(usr, "Details: [c.crimeDetails]") - to_chat(usr, "Added by [c.author] at [c.time]") - to_chat(usr, "----------") - to_chat(usr, "Major Crimes:") - for(var/datum/data/crime/c in R.fields["ma_crim"]) + for(var/datum/data/crime/c in R.fields["crim"]) to_chat(usr, "Crime: [c.crimeName]") - to_chat(usr, "Details: [c.crimeDetails]") + if (c.crimeDetails) + to_chat(usr, "Details: [c.crimeDetails]") + else + to_chat(usr, "Details: \[Add details]") to_chat(usr, "Added by [c.author] at [c.time]") to_chat(usr, "----------") to_chat(usr, "Notes: [R.fields["notes"]]") @@ -450,34 +468,31 @@ return if(href_list["add_crime"]) - switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) - if("Minor Crime") - var/t1 = stripped_input("Please input minor crime names:", "Security HUD", "", null) - var/t2 = stripped_multiline_input("Please input minor crime details:", "Security HUD", "", null) - if(!R || !t1 || !t2 || !allowed_access) - return - if(!H.canUseHUD()) - return - if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) - return - var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) - GLOB.data_core.addMinorCrime(R.fields["id"], crime) - investigate_log("New Minor Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) - to_chat(usr, "Successfully added a minor crime.") - return - if("Major Crime") - var/t1 = stripped_input("Please input major crime names:", "Security HUD", "", null) - var/t2 = stripped_multiline_input("Please input major crime details:", "Security HUD", "", null) - if(!R || !t1 || !t2 || !allowed_access) - return - if(!H.canUseHUD()) - return - if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) - return - var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) - GLOB.data_core.addMajorCrime(R.fields["id"], crime) - investigate_log("New Major Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) - to_chat(usr, "Successfully added a major crime.") + var/t1 = stripped_input("Please input crime name:", "Security HUD", "", null) + if(!R || !t1 || !allowed_access) + return + if(!H.canUseHUD()) + return + if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) + return + var/crime = GLOB.data_core.createCrimeEntry(t1, null, allowed_access, station_time_timestamp()) + GLOB.data_core.addCrime(R.fields["id"], crime) + investigate_log("New Crime: [t1] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + to_chat(usr, "Successfully added a crime.") + return + + if(href_list["add_details"]) + var/t1 = stripped_input(usr, "Please input crime details:", "Secure. records", "", null) + if(!R || !t1 || !allowed_access) + return + if(!H.canUseHUD()) + return + if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) + return + if(href_list["cdataid"]) + GLOB.data_core.addCrimeDetails(R.fields["id"], href_list["cdataid"], t1) + investigate_log("New Crime details: [t1] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + to_chat(usr, "Successfully added details.") return if(href_list["view_comment"]) @@ -710,8 +725,8 @@ remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, "#000000") cut_overlay(MA) -/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE) - if(!(mobility_flags & MOBILITY_UI)) +/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE, floor_okay=FALSE) + if(!(mobility_flags & MOBILITY_UI) && !floor_okay) to_chat(src, "You can't do that right now!") return FALSE if(!Adjacent(M) && (M.loc != src)) @@ -951,17 +966,19 @@ message_admins(msg) admin_ticket_log(src, msg) + /mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user) - if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS) - //If they dragged themselves and we're currently aggressively grabbing them try to piggyback - if(user == target && can_piggyback(target)) + if(pulling != target || grab_state < GRAB_AGGRESSIVE || stat != CONSCIOUS || a_intent != INTENT_GRAB) + return ..() + + //If they dragged themselves and we're currently aggressively grabbing them try to piggyback + if(user == target) + if(can_piggyback(target)) piggyback(target) - return - //If you dragged them to you and you're aggressively grabbing try to fireman carry them - else if(user != target && can_be_firemanned(target)) - fireman_carry(target) - return - . = ..() + //If you dragged them to you and you're aggressively grabbing try to fireman carry them + else if(can_be_firemanned(target)) + fireman_carry(target) + //src is the user that will be carrying, target is the mob to be carried /mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/target) @@ -1050,7 +1067,7 @@ return FALSE /mob/living/carbon/human/proc/clear_shove_slowdown() - remove_movespeed_modifier(MOVESPEED_ID_SHOVE) + remove_movespeed_modifier(/datum/movespeed_modifier/shove) var/active_item = get_active_held_item() if(is_type_in_typecache(active_item, GLOB.shove_disarming_types)) visible_message("[src.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE) @@ -1063,17 +1080,16 @@ . = ..() dna?.species.spec_updatehealth(src) if(HAS_TRAIT(src, TRAIT_IGNOREDAMAGESLOWDOWN)) - remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN) - remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING) + remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown) + remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying) return var/health_deficiency = max((maxHealth - health), staminaloss) if(health_deficiency >= 40) - add_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN, override = TRUE, multiplicative_slowdown = (health_deficiency / 75), blacklisted_movetypes = FLOATING|FLYING) - add_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING, override = TRUE, multiplicative_slowdown = (health_deficiency / 25), movetypes = FLOATING) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown, TRUE, multiplicative_slowdown = health_deficiency / 75) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying, TRUE, multiplicative_slowdown = health_deficiency / 25) else - remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN) - remove_movespeed_modifier(MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING) - + remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown) + remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying) /mob/living/carbon/human/washed(var/atom/washer) . = ..() @@ -1093,12 +1109,12 @@ if(gloves && !(HIDEGLOVES in obscured) && gloves.washed(washer)) SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) -/mob/living/carbon/human/adjust_nutrition(var/change) //Honestly FUCK the oldcoders for putting nutrition on /mob someone else can move it up because holy hell I'd have to fix SO many typechecks +/mob/living/carbon/human/adjust_nutrition(change) //Honestly FUCK the oldcoders for putting nutrition on /mob someone else can move it up because holy hell I'd have to fix SO many typechecks if(HAS_TRAIT(src, TRAIT_NOHUNGER)) return FALSE return ..() -/mob/living/carbon/human/set_nutrition(var/change) //Seriously fuck you oldcoders. +/mob/living/carbon/human/set_nutrition(change) //Seriously fuck you oldcoders. if(HAS_TRAIT(src, TRAIT_NOHUNGER)) return FALSE return ..() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 1e49413b770..acf832cd465 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -86,15 +86,18 @@ return BULLET_ACT_HIT return ..(P, def_zone) - -/mob/living/carbon/human/proc/check_reflect(def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on the reflection chance of the object +///Reflection checks for anything in your l_hand, r_hand, or wear_suit based on the reflection chance of the object +/mob/living/carbon/human/proc/check_reflect(def_zone) if(wear_suit) - if(wear_suit.IsReflect(def_zone) == 1) - return 1 + if(wear_suit.IsReflect(def_zone)) + return TRUE + if(head) + if(head.IsReflect(def_zone)) + return TRUE for(var/obj/item/I in held_items) - if(I.IsReflect(def_zone) == 1) - return 1 - return 0 + if(I.IsReflect(def_zone)) + return TRUE + return FALSE /mob/living/carbon/human/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) var/block_chance_modifier = round(damage / -3) @@ -182,7 +185,6 @@ var/hulk_verb = pick("smash","pummel") if(check_shields(user, 15, "the [hulk_verb]ing")) return - ..() playsound(loc, user.dna.species.attack_sound, 25, TRUE, -1) visible_message("[user] [hulk_verb]ed [src]!", \ "[user] [hulk_verb]ed [src]!", "You hear a sickening sound of flesh hitting flesh!", null, user) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 90cdcf2c0ce..cccf2e4fb4a 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -11,6 +11,7 @@ can_buckle = TRUE buckle_lying = FALSE mob_biotypes = MOB_ORGANIC|MOB_HUMANOID + blocks_emissive = EMISSIVE_BLOCK_UNIQUE //Hair colour and style var/hair_color = "000" var/hairstyle = "Bald" diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 222304e144c..ecc4ed7f770 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,11 +1,13 @@ /mob/living/carbon/human/get_movespeed_modifiers() var/list/considering = ..() - . = considering if(HAS_TRAIT(src, TRAIT_IGNORESLOWDOWN)) - for(var/id in .) - var/list/data = .[id] - if(data[MOVESPEED_DATA_INDEX_FLAGS] & IGNORE_NOSLOW) - .[id] = data + . = list() + for(var/id in considering) + var/datum/movespeed_modifier/M = considering[id] + if(M.flags & IGNORE_NOSLOW || M.multiplicative_slowdown < 0) + .[id] = M + return + return considering /mob/living/carbon/human/slip(knockdown_amount, obj/O, lube, paralyze, forcedrop) if(HAS_TRAIT(src, TRAIT_NOSLIPALL)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 7093f41441f..8efadac3f9d 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -116,6 +116,20 @@ dna.species.handle_environment_pressure(environment, src) dna.species.handle_body_temperature(src) +/** + * get_body_temperature Returns the body temperature with any modifications applied + * + * This applies the result from proc/get_body_temp_normal_change() against the bodytemp_normal + * for the species and returns the result + * + * arguments: + * * apply_change (optional) Default True This applies the changes to body temperature normal + */ +/mob/living/carbon/human/get_body_temp_normal(apply_change=TRUE) + if(!apply_change) + return dna.species.bodytemp_normal + return dna.species.bodytemp_normal + get_body_temp_normal_change() + ///FIRE CODE /mob/living/carbon/human/handle_fire() . = ..() diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 4f6710c77d7..d01bab05ca9 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -8,7 +8,7 @@ /mob/living/carbon/human/GetVoice() if(istype(wear_mask, /obj/item/clothing/mask/chameleon)) var/obj/item/clothing/mask/chameleon/V = wear_mask - if(V.vchange && wear_id) + if(V.voice_change && wear_id) var/obj/item/card/id/idcard = wear_id.GetID() if(istype(idcard)) return idcard.registered_name @@ -16,6 +16,12 @@ return real_name else return real_name + if(istype(wear_mask, /obj/item/clothing/mask/infiltrator)) + var/obj/item/clothing/mask/infiltrator/V = wear_mask + if(V.voice_unknown) + return ("Unknown") + else + return real_name if(mind) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling && changeling.mimicing ) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index b384265e568..587b1ef2968 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -78,20 +78,23 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/sound/attack_sound = 'sound/weapons/punch1.ogg' var/sound/miss_sound = 'sound/weapons/punchmiss.ogg' - //Breathing! - var/obj/item/organ/lungs/mutantlungs = null + //Breathing! Most changes are in mutantlungs, though var/breathid = "o2" - var/obj/item/organ/brain/mutant_brain = /obj/item/organ/brain - var/obj/item/organ/heart/mutant_heart = /obj/item/organ/heart + + //Do NOT remove by setting to null. use OR make a RESPECTIVE TRAIT (removing stomach? add the NOSTOMACH trait to your species) + //why does it work this way? because traits also disable the downsides of not having an organ, removing organs but not having the trait will make your species die + var/obj/item/organ/brain/mutantbrain = /obj/item/organ/brain + var/obj/item/organ/heart/mutantheart = /obj/item/organ/heart + var/obj/item/organ/lungs/mutantlungs = /obj/item/organ/lungs var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes var/obj/item/organ/ears/mutantears = /obj/item/organ/ears - var/obj/item/mutanthands var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue - var/obj/item/organ/tail/mutanttail = null - - var/obj/item/organ/liver/mutantliver - var/obj/item/organ/stomach/mutantstomach + var/obj/item/organ/liver/mutantliver = /obj/item/organ/liver + var/obj/item/organ/stomach/mutantstomach = /obj/item/organ/stomach + var/obj/item/organ/appendix/mutantappendix = /obj/item/organ/appendix + //only an honorary mutantthing because not an organ and not loaded in the same way, you've been warned to do your research + var/obj/item/mutanthands var/override_float = FALSE //Bitflag that controls what in game ways can select this species as a spawnable source @@ -153,110 +156,47 @@ GLOBAL_LIST_EMPTY(roundstart_races) return 0 return 1 -//Will regenerate missing organs -/datum/species/proc/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) - var/obj/item/organ/brain/brain = C.getorganslot(ORGAN_SLOT_BRAIN) - var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART) - var/obj/item/organ/lungs/lungs = C.getorganslot(ORGAN_SLOT_LUNGS) - var/obj/item/organ/appendix/appendix = C.getorganslot(ORGAN_SLOT_APPENDIX) - var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES) - var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS) - var/obj/item/organ/tongue/tongue = C.getorganslot(ORGAN_SLOT_TONGUE) - var/obj/item/organ/liver/liver = C.getorganslot(ORGAN_SLOT_LIVER) - var/obj/item/organ/stomach/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) - var/obj/item/organ/tail/tail = C.getorganslot(ORGAN_SLOT_TAIL) - - var/should_have_brain = TRUE - var/should_have_heart = !(NOBLOOD in species_traits) - var/should_have_lungs = !(TRAIT_NOBREATH in inherent_traits) - var/should_have_appendix = !(TRAIT_NOHUNGER in inherent_traits) - var/should_have_eyes = TRUE - var/should_have_ears = TRUE - var/should_have_tongue = TRUE - var/should_have_liver = !(TRAIT_NOMETABOLISM in inherent_traits) - var/should_have_stomach = !(NOSTOMACH in species_traits) - var/should_have_tail = mutanttail - - if(heart && (!should_have_heart || replace_current)) - heart.Remove(C,1) - QDEL_NULL(heart) - if(should_have_heart && !heart) - heart = new mutant_heart() - heart.Insert(C) - - if(lungs && (!should_have_lungs || replace_current)) - lungs.Remove(C,1) - QDEL_NULL(lungs) - if(should_have_lungs && !lungs) - if(mutantlungs) - lungs = new mutantlungs() - else - lungs = new() - lungs.Insert(C) - - if(liver && (!should_have_liver || replace_current)) - liver.Remove(C,1) - QDEL_NULL(liver) - if(should_have_liver && !liver) - if(mutantliver) - liver = new mutantliver() - else - liver = new() - liver.Insert(C) - - if(stomach && (!should_have_stomach || replace_current)) - stomach.Remove(C,1) - QDEL_NULL(stomach) - if(should_have_stomach && !stomach) - if(mutantstomach) - stomach = new mutantstomach() - else - stomach = new() - stomach.Insert(C) - - if(appendix && (!should_have_appendix || replace_current)) - appendix.Remove(C,1) - QDEL_NULL(appendix) - if(should_have_appendix && !appendix) - appendix = new() - appendix.Insert(C) - - if(tail && (!should_have_tail || replace_current)) - tail.Remove(C,1) - QDEL_NULL(tail) - if(should_have_tail && !tail) - tail = new mutanttail() - tail.Insert(C) - - if(C.get_bodypart(BODY_ZONE_HEAD)) - if(brain && (replace_current || !should_have_brain)) - if(!brain.decoy_override)//Just keep it if it's fake - brain.Remove(C,TRUE,TRUE) - QDEL_NULL(brain) - if(should_have_brain && !brain) - brain = new mutant_brain() - brain.Insert(C, TRUE, TRUE) - - if(eyes && (replace_current || !should_have_eyes)) - eyes.Remove(C,1) - QDEL_NULL(eyes) - if(should_have_eyes && !eyes) - eyes = new mutanteyes - eyes.Insert(C) - - if(ears && (replace_current || !should_have_ears)) - ears.Remove(C,1) - QDEL_NULL(ears) - if(should_have_ears && !ears) - ears = new mutantears - ears.Insert(C) - - if(tongue && (replace_current || !should_have_tongue)) - tongue.Remove(C,1) - QDEL_NULL(tongue) - if(should_have_tongue && !tongue) - tongue = new mutanttongue - tongue.Insert(C) + +/** regenerate_organs + * Corrects organs in a carbon, removing ones it doesn't need and adding ones it does + * + * takes all organ slots, removes organs a species should not have, adds organs a species should have. + * can use replace_current to refresh all organs, creating an entirely new set. + * Arguments: + * C - carbon, the owner of the species datum AKA whoever we're regenerating organs in + * old_species - datum, used when regenerate organs is called in a switching species to remove old mutant organs. + * replace_current - boolean, forces all old organs to get deleted whether or not they pass the species' ability to keep that organ + * excluded_zones - list, add zone defines to block organs inside of the zones from getting handled. see headless mutation for an example + */ +/datum/species/proc/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE,list/excluded_zones) + //what should be put in if there is no mutantorgan (brains handled seperately) + var/list/slot_mutantorgans = list(ORGAN_SLOT_BRAIN = mutantbrain, ORGAN_SLOT_HEART = mutantheart, ORGAN_SLOT_LUNGS = mutantlungs, ORGAN_SLOT_APPENDIX = mutantappendix, \ + ORGAN_SLOT_EYES = mutanteyes, ORGAN_SLOT_EARS = mutantears, ORGAN_SLOT_TONGUE = mutanttongue, ORGAN_SLOT_LIVER = mutantliver, ORGAN_SLOT_STOMACH = mutantstomach) + + for(var/slot in list(ORGAN_SLOT_BRAIN, ORGAN_SLOT_HEART, ORGAN_SLOT_LUNGS, ORGAN_SLOT_APPENDIX, \ + ORGAN_SLOT_EYES, ORGAN_SLOT_EARS, ORGAN_SLOT_TONGUE, ORGAN_SLOT_LIVER, ORGAN_SLOT_STOMACH)) + + var/obj/item/organ/oldorgan = C.getorganslot(slot) //used in removing + var/obj/item/organ/neworgan = slot_mutantorgans[slot] //used in adding + var/used_neworgan = FALSE + neworgan = new neworgan() + var/should_have = neworgan.get_availability(src) //organ proc that points back to a species trait (so if the species is supposed to have this organ) + + if(oldorgan && (!should_have || replace_current) && !(oldorgan.zone in excluded_zones)) + if(slot == ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = oldorgan + if(!brain.decoy_override)//"Just keep it if it's fake" - confucius, probably + brain.Remove(C,TRUE, TRUE) //brain argument used so it doesn't cause any... sudden death. + QDEL_NULL(brain) + oldorgan.Remove(C,TRUE) + QDEL_NULL(oldorgan) + + if(!oldorgan && should_have && !(initial(neworgan.zone) in excluded_zones)) + used_neworgan = TRUE + neworgan.Insert(C, TRUE, FALSE) + + if(!used_neworgan) + qdel(neworgan) if(old_species) for(var/mutantorgan in old_species.mutant_organs) @@ -265,9 +205,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) I.Remove(C) QDEL_NULL(I) - for(var/path in mutant_organs) - var/obj/item/organ/I = new path() - I.Insert(C) + for(var/thing in mutant_organs) + var/current_organ = C.getorgan(thing) + if(!current_organ || replace_current) + var/obj/item/organ/missed = new thing() + missed.Insert(C, TRUE, FALSE) /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 @@ -341,11 +283,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) fly = new fly.Grant(C) - C.add_movespeed_modifier(MOVESPEED_ID_SPECIES, TRUE, 100, override=TRUE, multiplicative_slowdown=speedmod, movetypes=(~FLYING)) + C.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/species, multiplicative_slowdown=speedmod) SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species) - /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() @@ -384,7 +325,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) C.dna.features["wings"] = "None" C.update_body() - C.remove_movespeed_modifier(MOVESPEED_ID_SPECIES) + C.remove_movespeed_modifier(/datum/movespeed_modifier/species) SEND_SIGNAL(C, COMSIG_SPECIES_LOSS, src) @@ -452,6 +393,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(hair_color) if(hair_color == "mutcolor") facial_overlay.color = "#" + H.dna.features["mcolor"] + else if(hair_color == "fixedmutcolor") + facial_overlay.color = "#[fixed_mut_color]" else facial_overlay.color = "#" + hair_color else @@ -513,6 +456,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(hair_color) if(hair_color == "mutcolor") hair_overlay.color = "#" + H.dna.features["mcolor"] + else if(hair_color == "fixedmutcolor") + hair_overlay.color = "#[fixed_mut_color]" else hair_overlay.color = "#" + hair_color else @@ -779,6 +724,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(HAIR) if(hair_color == "mutcolor") accessory_overlay.color = "#[H.dna.features["mcolor"]]" + else if(hair_color == "fixedmutcolor") + accessory_overlay.color = "#[fixed_mut_color]" else accessory_overlay.color = "#[H.hair_color]" if(FACEHAIR) @@ -1079,7 +1026,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) //////// //LIFE// //////// - /datum/species/proc/handle_digestion(mob/living/carbon/human/H) if(HAS_TRAIT(src, TRAIT_NOHUNGER)) return //hunger is for BABIES @@ -1089,14 +1035,14 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.overeatduration < 100) to_chat(H, "You feel fit again!") REMOVE_TRAIT(H, TRAIT_FAT, OBESITY) - H.remove_movespeed_modifier(MOVESPEED_ID_FAT) + H.remove_movespeed_modifier(/datum/movespeed_modifier/obesity) H.update_inv_w_uniform() H.update_inv_wear_suit() else if(H.overeatduration >= 100) to_chat(H, "You suddenly feel blubbery!") ADD_TRAIT(H, TRAIT_FAT, OBESITY) - H.add_movespeed_modifier(MOVESPEED_ID_FAT, multiplicative_slowdown = 1.5) + H.add_movespeed_modifier(/datum/movespeed_modifier/obesity) H.update_inv_w_uniform() H.update_inv_wear_suit() @@ -1151,13 +1097,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!HAS_TRAIT(H, TRAIT_NOHUNGER)) var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 if(hungry >= 70) - H.add_movespeed_modifier(MOVESPEED_ID_HUNGRY, override = TRUE, multiplicative_slowdown = (hungry / 50)) + H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50)) else if(isethereal(H)) var/datum/species/ethereal/E = H.dna.species if(E.get_charge(H) <= ETHEREAL_CHARGE_NORMAL) - H.add_movespeed_modifier(MOVESPEED_ID_HUNGRY, override = TRUE, multiplicative_slowdown = (1.5 * (1 - E.get_charge(H) / 100))) + H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (1.5 * (1 - E.get_charge(H) / 100))) else - H.remove_movespeed_modifier(MOVESPEED_ID_HUNGRY) + H.remove_movespeed_modifier(/datum/movespeed_modifier/hunger) switch(H.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) @@ -1440,8 +1386,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/knocked_item = FALSE if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types)) target_held_item = null - if(!target.has_movespeed_modifier(MOVESPEED_ID_SHOVE)) - target.add_movespeed_modifier(MOVESPEED_ID_SHOVE, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) + if(!target.has_movespeed_modifier(/datum/movespeed_modifier/shove)) + target.add_movespeed_modifier(/datum/movespeed_modifier/shove) if(target_held_item) target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!", "Your grip on \the [target_held_item] loosens!", null, COMBAT_MESSAGE_RANGE) @@ -1695,8 +1641,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) - // Remove any slow down from the cold - H.remove_movespeed_modifier(MOVESPEED_ID_COLD) + //Remove any slowdown from the cold. + H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) var/burn_damage = 0 var/firemodifier = H.fire_stacks / 50 @@ -1704,7 +1650,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) firemodifier = min(firemodifier, 0) // this can go below 5 at log 2.5 - burn_damage = max(log(2 - firemodifier, (H.bodytemperature - bodytemp_normal)) - 5,0) + burn_damage = max(log(2 - firemodifier, (H.bodytemperature - H.get_body_temp_normal(apply_change=FALSE))) - 5,0) // Display alerts based on the amount of fire damage being taken if (burn_damage) @@ -1731,12 +1677,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) // clear any hot moods and apply cold mood SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) - // Apply cold slow down - H.add_movespeed_modifier(MOVESPEED_ID_COLD, override = TRUE, \ - multiplicative_slowdown = ((bodytemp_cold_damage_limit - H.bodytemperature) / COLD_SLOWDOWN_FACTOR), \ - blacklisted_movetypes = FLOATING) - + H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((bodytemp_cold_damage_limit - H.bodytemperature) / COLD_SLOWDOWN_FACTOR)) // Display alerts based on the amount of cold damage being taken // Apply more damage based on how cold you are switch(H.bodytemperature) @@ -1753,7 +1695,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) // We are not to hot or cold, remove status and moods else H.clear_alert("temp") - H.remove_movespeed_modifier(MOVESPEED_ID_COLD) + H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") @@ -1809,7 +1751,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) var/areatemp = H.get_temperature(environment) var/body_temp = H.bodytemperature // Get current body temperature - var/body_temperature_difference = bodytemp_normal - body_temp + var/body_temperature_difference = H.get_body_temp_normal() - body_temp var/natural_change = 0 // We are very cold, increate body temperature @@ -1818,12 +1760,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) bodytemp_autorecovery_min) // we are cold, reduce the minimum increment and do not jump over the difference - else if(body_temp > bodytemp_cold_damage_limit && body_temp < bodytemp_normal) + else if(body_temp > bodytemp_cold_damage_limit && body_temp < H.get_body_temp_normal()) natural_change = max(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ min(body_temperature_difference, bodytemp_autorecovery_min / 4)) // We are hot, reduce the minimum increment and do not jump below the difference - else if(body_temp > bodytemp_normal && body_temp <= bodytemp_heat_damage_limit) + else if(body_temp > H.get_body_temp_normal() && body_temp <= bodytemp_heat_damage_limit) natural_change = min(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ max(body_temperature_difference, -(bodytemp_autorecovery_min / 4))) @@ -1833,7 +1775,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/thermal_protection = H.get_insulation_protection(body_temp + natural_change) if(areatemp > body_temp) // It is hot here - if(body_temp < bodytemp_normal) + if(body_temp < H.get_body_temp_normal()) // Our bodytemp is below normal we are cold, insulation helps us retain body heat // and will reduce the heat we lose to the environment natural_change = (thermal_protection + 1) * natural_change @@ -1843,7 +1785,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) natural_change = (1 / (thermal_protection + 1)) * natural_change else // It is cold here if(!H.on_fire) // If on fire ignore ignore local temperature in cold areas - if(body_temp < bodytemp_normal) + if(body_temp < H.get_body_temp_normal()) // Our bodytemp is below normal, insulation helps us retain body heat // and will reduce the heat we lose to the environment natural_change = (thermal_protection + 1) * natural_change diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm index 57ab0c1c299..5f7febe6600 100644 --- a/code/modules/mob/living/carbon/human/species_types/IPC.dm +++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm @@ -6,7 +6,7 @@ species_traits = list(NOTRANSSTING,NOEYESPRITES,NO_DNA_COPY,NOBLOOD,TRAIT_EASYDISMEMBER,ROBOTIC_LIMBS,NOZOMBIE,MUTCOLORS,REVIVESBYHEALING,NOHUSK,NOMOUTH,NO_BONES) //all of these + whatever we inherit from the real species inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH,TRAIT_RADIMMUNE,TRAIT_LIMBATTACHMENT) inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) - mutant_brain = /obj/item/organ/brain/mmi_holder/posibrain + mutantbrain = /obj/item/organ/brain/mmi_holder/posibrain mutanteyes = /obj/item/organ/eyes/robotic mutanttongue = /obj/item/organ/tongue/robot mutantliver = /obj/item/organ/liver/cybernetic/upgraded/ipc diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 74d83cdedf7..9935717ba80 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -6,7 +6,7 @@ inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") use_skintones = TRUE - mutant_brain = /obj/item/organ/brain/dullahan + mutantbrain = /obj/item/organ/brain/dullahan mutanteyes = /obj/item/organ/eyes/dullahan mutanttongue = /obj/item/organ/tongue/dullahan mutantears = /obj/item/organ/ears/dullahan @@ -142,8 +142,8 @@ hearers += owner //Stops dullahans from gibbing when regenerating limbs -/obj/item/dullahan_relay/proc/unlist_head(datum/source, noheal = FALSE, list/excluded_limbs) - excluded_limbs |= BODY_ZONE_HEAD +/obj/item/dullahan_relay/proc/unlist_head(datum/source, noheal = FALSE, list/excluded_zones) + excluded_zones |= BODY_ZONE_HEAD //Retrieving the owner's head for better ahealing. /obj/item/dullahan_relay/proc/retrieve_head(datum/source, full_heal, admin_revive) diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 079e2ffc321..febaed37cf6 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -14,7 +14,7 @@ brutemod = 1.25 //They're weak to punches attack_type = BURN //burn bish damage_overlay_type = "" //We are too cool for regular damage overlays - species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR) + species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR, HAIR) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/ethereal inherent_traits = list(TRAIT_NOHUNGER) @@ -25,6 +25,8 @@ bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // about 150C // Cold temperatures hurt faster as it is harder to move with out the heat energy bodytemp_cold_damage_limit = (T20C - 10) // about 10c + hair_color = "fixedmutcolor" + hair_alpha = 140 var/current_color var/EMPeffect = FALSE var/emageffect = FALSE @@ -37,6 +39,7 @@ //this is shit but how do i fix it? no clue. loreblurb = "Ethereals are organic humanoid beings with a blood that has strange luminiscent and electrical properties. \ Ethereals are barred from most authority roles on Nanotrasen stations and are not protected by the AI's default Asimov laws." + var/drain_time = 0 //used to keep ethereals from spam draining power sources /datum/species/ethereal/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) .=..() diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 1e6fdb32d08..3a70c3af44e 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -9,7 +9,7 @@ default_features = list("mcolor" = "FFF", "tail_human" = "Cat", "ears" = "Cat", "wings" = "None") mutantears = /obj/item/organ/ears/cat - mutanttail = /obj/item/organ/tail/cat + mutant_organs = list(/obj/item/organ/tail/cat) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT var/original_felinid = TRUE //set to false for felinids created by mass-purrbation loreblurb = "Felinids have a long history with Space Station 13. One of the earliest events still recorded, in much simpler times, shows cat ears and tails were perhaps just a consumer product \ @@ -65,37 +65,9 @@ var/obj/item/organ/tail/cat/tail = new tail.Insert(H, drop_if_replaced = FALSE) else - mutanttail = null + mutant_organs = list() 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(ishuman(M)) @@ -145,8 +117,9 @@ for(var/obj/item/organ/current_organ in organs) if(istype(current_organ, /obj/item/organ/tail/cat)) current_organ.Remove(H, TRUE) - if(target_species.mutanttail) - var/obj/item/organ/new_tail = new target_species.mutanttail + var/obj/item/organ/tail/new_tail = locate(/obj/item/organ/tail) in target_species.mutant_organs + if(new_tail) + new_tail = new new_tail() new_tail.Insert(H, TRUE, FALSE) if(istype(current_organ, /obj/item/organ/ears/cat)) var/obj/item/organ/new_ears = new target_species.mutantears diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index aab8fce1f5c..c15189182f0 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -115,6 +115,7 @@ say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT var/datum/action/innate/split_body/slime_split var/list/mob/living/carbon/bodies var/datum/action/innate/swap_body/swap_body 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 9620c069df4..56dbcb91a3a 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -1,6 +1,6 @@ /datum/species/lizard // Reptilian humanoids with scaled skin and tails. - name = "Unathi" //oops I'm lazy and this is all I'm going to change to lizard + name = "Lizardperson" id = "lizard" say_mod = "hisses" default_color = "00FF00" @@ -8,7 +8,7 @@ inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") mutanttongue = /obj/item/organ/tongue/lizard - mutanttail = /obj/item/organ/tail/lizard + mutant_organs = list(/obj/item/organ/tail/lizard) coldmod = 1.5 heatmod = 0.67 default_features = list("mcolor" = "0F0", "tail_lizard" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs") @@ -28,7 +28,7 @@ // Lizards are coldblooded and can stand a greater temperature range than humans bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + 20) // This puts lizards 10 above lavaland max heat for ash lizards. bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT - 10) - loreblurb = "Cold-blooded and covered in scales, lizard may seem like a vicious predator put in a fancy jumpsuit, \ + loreblurb = "Cold-blooded and covered in scales, lizards may seem like a vicious predator put in a fancy jumpsuit, \ but due to some recent pressure from HR they're generally well-behaved. Most of them don't even fight all that well. \ Confusing them with Ash Walkers (the similarly lizard-like natives of the Lavaland Wastes) might lead to having a spear lodged in your skull." diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 90848024c74..e966f517a61 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -17,12 +17,12 @@ mutanteyes = /obj/item/organ/eyes/moth changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT species_language_holder = /datum/language_holder/moth - loreblurb = "### ERROR: REMOTE INTERCEPT - INFORMATION MAY HAVE BEEN REDACTED FROM THIS DOCUMENT FOR YOUR SAFETY ### \ - Mutations into a moth-like organism have been acknowledged on Space Station 13, mothpeople are distant cousins of the flypeople. Mothpeople seem to originate fro- R̶̵̨͟E̕D҉̀͜A͜͢҉͠C̶̨͘͜͜T̸̴̵̶̕Ȩ̛̀͢D̷͡҉̕҉ \ - ### REMOTE INTERCEPT ENDS - HAVE A SECURE DAY ###" + loreblurb = "Originating from the ruins of an unknown company's abandoned bluespace research facility, mothpeople are the mutated forms \ + of the pests that were quick to set into the facility after it was abandoned, not a human teleporter malfunction as many believe. \ + Their initial limited intelligence led to moffic, their \"native\" language. Generations later, most mothpeople still speak this language. \ + After finally being discovered by an unknown craft, mothpeople were quick to spread out across the galaxy and are now as commonplace as their natural counterparts." - -/datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) +/datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE,list/excluded_zones) . = ..() if(ishuman(C)) var/mob/living/carbon/human/H = C diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 17bf82f2202..26bd64d4268 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -39,8 +39,8 @@ species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYESPRITES) inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER) mutanteyes = /obj/item/organ/eyes/night_vision/nightmare - mutant_organs = list(/obj/item/organ/heart/nightmare) - mutant_brain = /obj/item/organ/brain/nightmare + mutantheart = /obj/item/organ/heart/nightmare + mutantbrain = /obj/item/organ/brain/nightmare var/info_text = "You are a Nightmare. The ability shadow walk allows unlimited, unrestricted movement in the dark while activated. \ Your light eater will destroy any light producing objects you attack, as well as destroy any lights a living creature may be holding. You will automatically dodge gunfire and melee attacks when on a dark tile. If killed, you will eventually revive if left in darkness." @@ -49,7 +49,7 @@ . = ..() to_chat(C, "[info_text]") - C.fully_replace_character_name("[pick(GLOB.nightmare_names)]") + C.fully_replace_character_name(null, pick(GLOB.nightmare_names)) /datum/species/shadow/nightmare/bullet_act(obj/projectile/P, mob/living/carbon/human/H) var/turf/T = H.loc diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 9296e9ee58b..375ba7be6dc 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -41,7 +41,7 @@ var/obj/item/storage/backpack/bag = C.get_item_by_slot(ITEM_SLOT_BACK) if(istype(bag, /obj/item/storage/backpack/snail)) bag.emptyStorage() - C.doUnEquip(bag, TRUE, no_move = TRUE) + C.temporarilyRemoveItemFromInventory(bag, TRUE) qdel(bag) /obj/item/storage/backpack/snail diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 8e9874d0faa..1bd65fc01ab 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -9,7 +9,7 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | ERT_SPAWN exotic_bloodtype = "U" use_skintones = TRUE - mutant_heart = /obj/item/organ/heart/vampire + mutantheart = /obj/item/organ/heart/vampire mutanttongue = /obj/item/organ/tongue/vampire limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index a27d048a751..00e75095817 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -58,6 +58,7 @@ wear_mask_update(I, toggle_off = 0) if(ITEM_SLOT_HEAD) head = I + SEND_SIGNAL(src, COMSIG_CARBON_EQUIP_HAT, I) head_update(I) if(ITEM_SLOT_NECK) wear_neck = I @@ -92,6 +93,7 @@ if(I == head) head = null + SEND_SIGNAL(src, COMSIG_CARBON_UNEQUIP_HAT, I, force, newloc, no_move, invdrop, silent) if(!QDELETED(src)) head_update(I) else if(I == back) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 4652a5528f4..f19ede23b57 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -253,6 +253,11 @@ var/nitryl_partialpressure = (breath_gases[/datum/gas/nitryl][MOLES]/breath.total_moles())*breath_pressure adjustFireLoss(nitryl_partialpressure/4) + //FREON + if(breath_gases[/datum/gas/freon]) + var/freon_partialpressure = (breath_gases[/datum/gas/freon][MOLES]/breath.total_moles())*breath_pressure + adjustFireLoss(freon_partialpressure * 0.25) + //MIASMA if(breath_gases[/datum/gas/miasma]) var/miasma_partialpressure = (breath_gases[/datum/gas/miasma][MOLES]/breath.total_moles())*breath_pressure @@ -576,7 +581,7 @@ All effects don't start immediately, but rather get worse over time; the rate is */ /mob/living/carbon/proc/natural_bodytemperature_stabilization(datum/gas_mixture/environment) var/areatemp = get_temperature(environment) - var/body_temperature_difference = BODYTEMP_NORMAL - bodytemperature + var/body_temperature_difference = get_body_temp_normal() - bodytemperature var/natural_change = 0 // We are very cold, increate body temperature @@ -585,12 +590,12 @@ All effects don't start immediately, but rather get worse over time; the rate is BODYTEMP_AUTORECOVERY_MINIMUM) // we are cold, reduce the minimum increment and do not jump over the difference - else if(bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT && bodytemperature < BODYTEMP_NORMAL) + else if(bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT && bodytemperature < get_body_temp_normal()) natural_change = max(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ min(body_temperature_difference, BODYTEMP_AUTORECOVERY_MINIMUM / 4)) // We are hot, reduce the minimum increment and do not jump below the difference - else if(bodytemperature > BODYTEMP_NORMAL && bodytemperature <= BODYTEMP_HEAT_DAMAGE_LIMIT) + else if(bodytemperature > get_body_temp_normal() && bodytemperature <= BODYTEMP_HEAT_DAMAGE_LIMIT) natural_change = min(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ max(body_temperature_difference, -(BODYTEMP_AUTORECOVERY_MINIMUM / 4))) @@ -600,7 +605,7 @@ All effects don't start immediately, but rather get worse over time; the rate is var/thermal_protection = 1 - get_insulation_protection(areatemp) // invert the protection if(areatemp > bodytemperature) // It is hot here - if(bodytemperature < BODYTEMP_NORMAL) + if(bodytemperature < get_body_temp_normal()) // Our bodytemp is below normal we are cold, insulation helps us retain body heat // and will reduce the heat we lose to the environment natural_change = (thermal_protection + 1) * natural_change @@ -610,7 +615,7 @@ All effects don't start immediately, but rather get worse over time; the rate is natural_change = (1 / (thermal_protection + 1)) * natural_change else // It is cold here if(!on_fire) // If on fire ignore ignore local temperature in cold areas - if(bodytemperature < BODYTEMP_NORMAL) + if(bodytemperature < get_body_temp_normal()) // Our bodytemp is below normal, insulation helps us retain body heat // and will reduce the heat we lose to the environment natural_change = (thermal_protection + 1) * natural_change @@ -653,12 +658,12 @@ All effects don't start immediately, but rather get worse over time; the rate is /mob/living/carbon/proc/share_bodytemperature(mob/living/carbon/M) var/temp_diff = bodytemperature - M.bodytemperature if(temp_diff > 0) // you are warm share the heat of life - M.adjust_bodytemperature(temp_diff, use_insulation=TRUE, use_steps=TRUE) // warm up the giver - adjust_bodytemperature((temp_diff * -1), use_insulation=TRUE, use_steps=TRUE) // cool down the reciver + M.adjust_bodytemperature((temp_diff * 0.5), use_insulation=TRUE, use_steps=TRUE) // warm up the giver + adjust_bodytemperature((temp_diff * -0.5), use_insulation=TRUE, use_steps=TRUE) // cool down the reciver else // they are warmer leech from them - adjust_bodytemperature(temp_diff, use_insulation=TRUE, use_steps=TRUE) // warm up the reciver - M.adjust_bodytemperature((temp_diff * -1), use_insulation=TRUE, use_steps=TRUE) // cool down the giver + adjust_bodytemperature((temp_diff * -0.5) , use_insulation=TRUE, use_steps=TRUE) // warm up the reciver + M.adjust_bodytemperature((temp_diff * 0.5), use_insulation=TRUE, use_steps=TRUE) // cool down the giver /** * Adjust the body temperature of a mob diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index f9a0f9443ef..746fd12db92 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -50,7 +50,7 @@ return ..() /mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) - if(abs(BODYTEMP_NORMAL - breath.temperature) > 50) + if(abs(get_body_temp_normal() - breath.temperature) > 50) switch(breath.temperature) if(-INFINITY to 120) adjustFireLoss(3) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index c9e127ca479..9d7ed3ae160 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -12,6 +12,7 @@ type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey gib_type = /obj/effect/decal/cleanable/blood/gibs unique_name = TRUE + blocks_emissive = EMISSIVE_BLOCK_UNIQUE bodyparts = list(/obj/item/bodypart/chest/monkey, /obj/item/bodypart/head/monkey, /obj/item/bodypart/l_arm/monkey, /obj/item/bodypart/r_arm/monkey, /obj/item/bodypart/r_leg/monkey, /obj/item/bodypart/l_leg/monkey) hud_type = /datum/hud/monkey @@ -61,14 +62,13 @@ /mob/living/carbon/monkey/on_reagent_change() . = ..() - remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE) var/amount if(reagents.has_reagent(/datum/reagent/medicine/morphine)) amount = -1 if(reagents.has_reagent(/datum/reagent/consumable/nuka_cola)) amount = -1 if(amount) - add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_reagent_speedmod, TRUE, amount) /mob/living/carbon/monkey/updatehealth() . = ..() @@ -77,14 +77,14 @@ var/health_deficiency = (maxHealth - health) if(health_deficiency >= 45) slow += (health_deficiency / 25) - add_movespeed_modifier(MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = slow) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_health_speedmod, TRUE, slow) /mob/living/carbon/monkey/adjust_bodytemperature(amount, min_temp=0, max_temp=INFINITY, use_insulation=FALSE, use_steps=FALSE) . = ..() var/slow = 0 if (bodytemperature < 283.222) slow += ((283.222 - bodytemperature) / 10) * 1.75 - add_movespeed_modifier(MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = slow) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/monkey_temperature_speedmod, TRUE, slow) /mob/living/carbon/monkey/Stat() ..() @@ -96,8 +96,6 @@ if(changeling) stat("Chemical Storage", "[changeling.chem_charges]/[changeling.chem_storage]") stat("Absorbed DNA", changeling.absorbedcount) - return - /mob/living/carbon/monkey/verb/removeinternal() set name = "Remove Internals" diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index a135d3dc70c..04bb8d1d98c 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -59,9 +59,9 @@ deadchat_broadcast(" has died at [get_area_name(T)].", "[mind.name]", follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) if(mind) mind.store_memory("Time of death: [tod]", 0) - GLOB.alive_mob_list -= src + remove_from_alive_mob_list() if(!gibbed && !was_dead_before) - GLOB.dead_mob_list += src + add_to_dead_mob_list() set_drugginess(0) set_disgust(0) SetSleeping(0, 0) diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm index cce936d2789..baa804a9ac0 100644 --- a/code/modules/mob/living/inhand_holder.dm +++ b/code/modules/mob/living/inhand_holder.dm @@ -5,24 +5,22 @@ desc = "Yell at coderbrush." icon = null icon_state = "" - item_flags = DROPDEL + slot_flags = NONE var/mob/living/held_mob - var/can_head = TRUE var/destroying = FALSE -/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/M, _worn_state, head_icon, lh_icon, rh_icon, _can_head = TRUE) +/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/M, worn_state, head_icon, lh_icon, rh_icon, worn_slot_flags = NONE) . = ..() - can_head = _can_head if(head_icon) mob_overlay_icon = head_icon - if(_worn_state) - item_state = _worn_state + if(worn_state) + item_state = worn_state if(lh_icon) lefthand_file = lh_icon if(rh_icon) righthand_file = rh_icon - if(!can_head) - slot_flags = NONE + if(worn_slot_flags) + slot_flags = worn_slot_flags deposit(M) /obj/item/clothing/head/mob_holder/Destroy() @@ -45,6 +43,11 @@ /obj/item/clothing/head/mob_holder/proc/update_visuals(mob/living/L) appearance = L.appearance +/obj/item/clothing/head/mob_holder/dropped() + ..() + if(held_mob && isturf(loc)) + release() + /obj/item/clothing/head/mob_holder/proc/release(del_on_release = TRUE) if(!held_mob) if(del_on_release && !destroying) @@ -81,4 +84,4 @@ if(!D) return ..() icon = 'icons/mob/drone.dmi' - icon_state = "[D.visualAppearence]_hat" + icon_state = "[D.visualAppearance]_hat" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a4d5cac597d..3658a4b4c27 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -259,8 +259,8 @@ if(AM.pulledby) if(!supress_message) - AM.visible_message("[src] has pulled [AM] from [AM.pulledby]'s grip.", \ - "[src] has pulled you from [AM.pulledby]'s grip.", null, null, src) + AM.visible_message("[src] pulls [AM] from [AM.pulledby]'s grip.", \ + "[src] pulls you from [AM.pulledby]'s grip.", null, null, src) to_chat(src, "You pull [AM] from [AM.pulledby]'s grip!") log_combat(AM, AM.pulledby, "pulled from", src) AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once. @@ -529,7 +529,7 @@ if(mob_mask.Height() > world.icon_size || mob_mask.Width() > world.icon_size) var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite" mob_mask = icon('icons/mob/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll - UNLINT(livingdoll.filters += filter(type="alpha", icon = mob_mask)) + livingdoll.filters += filter(type="alpha", icon = mob_mask) livingdoll.filters += filter(type="drop_shadow", size = -1) if(severity > 0) overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) @@ -537,13 +537,29 @@ clear_fullscreen("brute") //Proc used to resuscitate a mob, for full_heal see fully_heal() -/mob/living/proc/revive(full_heal = FALSE, admin_revive = FALSE) +/mob/living/proc/revive(full_heal = FALSE, admin_revive = FALSE, excess_healing = 0) + if(excess_healing) + if(iscarbon(src) && excess_healing) + var/mob/living/carbon/C = src + if(!(C.dna?.species && (NOBLOOD in C.dna.species.species_traits))) + C.blood_volume += (excess_healing*2)//1 excess = 10 blood + + for(var/i in C.internal_organs) + var/obj/item/organ/O = i + if(O.organ_flags & ORGAN_SYNTHETIC) + continue + O.applyOrganDamage(excess_healing*-1)//1 excess = 5 organ damage healed + + adjustOxyLoss(-20, TRUE) + adjustToxLoss(-20, TRUE) //slime friendly + updatehealth() + grab_ghost() SEND_SIGNAL(src, COMSIG_LIVING_REVIVE, full_heal, admin_revive) if(full_heal) fully_heal(admin_revive = admin_revive) if(stat == DEAD && can_be_revived()) //in some cases you can't revive (e.g. no brain) - GLOB.dead_mob_list -= src - GLOB.alive_mob_list += src + remove_from_dead_mob_list() + add_to_alive_mob_list() set_suicide(FALSE) set_stat(UNCONSCIOUS) //the mob starts unconscious, updatehealth() //then we check if the mob should wake up. @@ -556,6 +572,9 @@ for(var/S in mind.spell_list) var/obj/effect/proc_holder/spell/spell = S spell.updateButtonIcon() + if(excess_healing) + emote("gasp") + log_combat(src, src, "revived") /mob/living/proc/remove_CC(should_update_mobility = TRUE) SetStun(0, FALSE) @@ -588,7 +607,7 @@ losebreath = 0 radiation = 0 set_nutrition(NUTRITION_LEVEL_FED + 50) - bodytemperature = BODYTEMP_NORMAL + bodytemperature = get_body_temp_normal(apply_change=FALSE) set_blindness(0) set_blurriness(0) set_dizziness(0) @@ -767,7 +786,7 @@ if((resting || HAS_TRAIT(src, TRAIT_GRABWEAKNESS)) && pulledby.grab_state < GRAB_KILL) //If resting, resisting out of a grab is equivalent to 1 grab state higher. wont make the grab state exceed the normal max, however altered_grab_state++ var/resist_chance = BASE_GRAB_RESIST_CHANCE // see defines/combat.dm - resist_chance = max(resist_chance/altered_grab_state-sqrt((getStaminaLoss()+getBruteLoss()/2)*(3-altered_grab_state)), 0) // https://i.imgur.com/6yAT90T.png for sample output values + resist_chance = max((resist_chance/altered_grab_state)-sqrt((getBruteLoss()+getFireLoss()+getOxyLoss()+getToxLoss()+getCloneLoss())*0.5+getStaminaLoss()), 0) //stamina loss is weighted twice as heavily as the other damage types in this calculation if(prob(resist_chance)) visible_message("[src] breaks free of [pulledby]'s grip!", \ "You break free of [pulledby]'s grip!", null, null, pulledby) @@ -907,8 +926,8 @@ var/amplitude = min(4, (jitteriness/100) + 1) var/pixel_x_diff = rand(-amplitude, amplitude) var/pixel_y_diff = rand(-amplitude/3, amplitude/3) - var/final_pixel_x = get_standard_pixel_x_offset(lying) - var/final_pixel_y = get_standard_pixel_y_offset(lying) + var/final_pixel_x = get_standard_pixel_x_offset(!(mobility_flags & MOBILITY_STAND)) + var/final_pixel_y = get_standard_pixel_y_offset(!(mobility_flags & MOBILITY_STAND)) animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = 6) animate(pixel_x = final_pixel_x , pixel_y = final_pixel_y , time = 2) setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). @@ -1225,16 +1244,17 @@ if(!has_legs && has_arms < 2) limbless_slowdown += 6 - (has_arms * 3) if(limbless_slowdown) - add_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=limbless_slowdown, movetypes=GROUND) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/limbless, multiplicative_slowdown = limbless_slowdown) else - remove_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/limbless) + //this won't really work with species with more than 2 legs, but it'll function var/broken_slowdown = 0 if(broken_legs > 0) broken_slowdown += 0 + (broken_legs * 2) - add_movespeed_modifier(MOVESPEED_ID_LIVING_BROKEN_BONES, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=broken_slowdown, movetypes=GROUND) //can't move fast with a broken leg + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bones, multiplicative_slowdown=broken_slowdown) //can't move fast with a broken leg else - remove_movespeed_modifier(MOVESPEED_ID_LIVING_BROKEN_BONES, update=TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/bones) /mob/living/proc/fall(forced) if(!(mobility_flags & MOBILITY_USE)) @@ -1301,18 +1321,19 @@ ..() update_z(new_z) -/mob/living/MouseDrop(mob/over) +/mob/living/MouseDrop_T(atom/dropping, atom/user) + var/mob/living/U = user + if(isliving(dropping)) + var/mob/living/M = dropping + if(M.can_be_held && U.pulling == M) + M.mob_try_pickup(U)//blame kevinz + return//dont open the mobs inventory if you are picking them up . = ..() - var/mob/living/user = usr - if(!istype(over) || !istype(user)) - return - if(!over.Adjacent(src) || (user != src) || !canUseTopic(over)) - return - if(can_be_held) - mob_try_pickup(over) /mob/living/proc/mob_pickup(mob/living/L) - return + var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, held_state, head_icon, held_lh, held_rh, worn_slot_flags) + L.visible_message("[L] scoops up [src]!") + L.put_in_hands(holder) /mob/living/proc/set_name() numba = rand(1, 1000) @@ -1367,11 +1388,11 @@ return FALSE if("stat") if((stat == DEAD) && (var_value < DEAD))//Bringing the dead back to life - GLOB.dead_mob_list -= src - GLOB.alive_mob_list += src + remove_from_dead_mob_list() + add_to_alive_mob_list() if((stat < DEAD) && (var_value == DEAD))//Kill he - GLOB.alive_mob_list -= src - GLOB.dead_mob_list += src + remove_from_alive_mob_list() + add_to_dead_mob_list() . = ..() switch(var_name) if("knockdown") @@ -1428,3 +1449,52 @@ var/ERROR_ERROR_LANDMARK_ERROR = "ERROR-ERROR: ERROR landmark missing!" log_mapping(ERROR_ERROR_LANDMARK_ERROR) CRASH(ERROR_ERROR_LANDMARK_ERROR) + +/** + * add_body_temperature_change Adds modifications to the body temperature + * + * This collects all body temperature changes that the mob is experiencing to the list body_temp_changes + * the aggrogate result is used to derive the new body temperature for the mob + * + * arguments: + * * key_name (str) The unique key for this change, if it already exist it will be overridden + * * amount (int) The amount of change from the base body temperature + */ +/mob/living/proc/add_body_temperature_change(key_name, amount) + body_temp_changes["[key_name]"] = amount + +/** + * remove_body_temperature_change Removes the modifications to the body temperature + * + * This removes the recorded change to body temperature from the body_temp_changes list + * + * arguments: + * * key_name (str) The unique key for this change that will be removed + */ +/mob/living/proc/remove_body_temperature_change(key_name) + body_temp_changes -= key_name + +/** + * get_body_temp_normal_change Returns the aggregate change to body temperature + * + * This aggregates all the changes in the body_temp_changes list and returns the result + */ +/mob/living/proc/get_body_temp_normal_change() + var/total_change = 0 + if(body_temp_changes.len) + for(var/change in body_temp_changes) + total_change += body_temp_changes["[change]"] + return total_change + +/** + * get_body_temp_normal Returns the mobs normal body temperature with any modifications applied + * + * This applies the result from proc/get_body_temp_normal_change() against the BODYTEMP_NORMAL and returns the result + * + * arguments: + * * apply_change (optional) Default True This applies the changes to body temperature normal + */ +/mob/living/proc/get_body_temp_normal(apply_change=TRUE) + if(!apply_change) + return BODYTEMP_NORMAL + return BODYTEMP_NORMAL + get_body_temp_normal_change() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index a946e2a3047..2234d279a44 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -78,6 +78,8 @@ if(!blocked) visible_message("[src] is hit by [I]!", \ "You're hit by [I]!") + if(!I.throwforce) + return var/armor = run_armor_check(zone, "melee", "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].",I.armour_penetration) apply_damage(I.throwforce, dtype, zone, armor) if(I.thrownby) @@ -184,7 +186,7 @@ visible_message("[user] grabs [src] aggressively!", \ "[user] grabs you aggressively!", "You hear aggressive shuffling!", null, user) to_chat(user, "You grab [src] aggressively!") - drop_all_held_items() + drop_all_held_items() stop_pulling() log_combat(user, src, "grabbed", addition="aggressive grab[add_log]") if(GRAB_NECK) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 783b4e11291..71a07740597 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -28,7 +28,7 @@ var/resting = FALSE - var/lying = 0 ///number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!! + VAR_PROTECTED/lying = 0 ///number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!! var/lying_prev = 0 ///last value of lying on update_mobility var/confused = 0 ///Makes the mob move in random directions. @@ -59,10 +59,9 @@ var/on_fire = 0 ///The "Are we on fire?" var var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20 - var/bloodcrawl = 0 ///0 No blood crawling, [BLOODCRAWL] for bloodcrawling, [BLOODCRAWL_EAT] for crawling+mob devour - var/holder = null ///The holder for blood crawling - var/ventcrawler = 0 ///0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always - var/limb_destroyer = 0 ///1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. + var/holder = null //The holder for blood crawling + var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always + var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. var/mob_size = MOB_SIZE_HUMAN var/mob_biotypes = MOB_ORGANIC @@ -113,7 +112,8 @@ var/list/obj/effect/proc_holder/abilities = list() - var/can_be_held = FALSE ///whether this can be picked up and held. + var/can_be_held = FALSE //whether this can be picked up and held. + var/worn_slot_flags = NONE //if it can be held, can it be equipped to any slots? (think pAI's on head) var/radiation = 0 ///If the mob is irradiated. var/ventcrawl_layer = PIPING_LAYER_DEFAULT @@ -127,7 +127,16 @@ var/slowed_by_drag = TRUE ///Whether the mob is slowed down when dragging another prone mob - var/list/ownedSoullinks ///soullinks we are the owner of - var/list/sharedSoullinks ///soullinks we are a/the sharer of + var/list/ownedSoullinks //soullinks we are the owner of + var/list/sharedSoullinks //soullinks we are a/the sharer of var/is_busy = FALSE //Waspstation Edit - Curbstomping - Used for random actions that take time. ex: curbstomping. We need to make sure we can only do one of these at a time. + + /// List of changes to body temperature, used by desease symtoms like fever + var/list/body_temp_changes = list() + + //this stuff is here to make it simple for admins to mess with custom held sprites + var/icon/held_lh = 'icons/mob/pets_held_lh.dmi'//icons for holding mobs + var/icon/held_rh = 'icons/mob/pets_held_rh.dmi' + var/icon/head_icon = 'icons/mob/pets_held.dmi'//what it looks like on your head + var/held_state = ""//icon state for the above diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index bb3b3ada421..b92b2654f78 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -26,41 +26,34 @@ return ..() /mob/living/proc/update_move_intent_slowdown() - var/mod = 0 - if(m_intent == MOVE_INTENT_WALK) - mod = CONFIG_GET(number/movedelay/walk_delay) - else - mod = CONFIG_GET(number/movedelay/run_delay) - if(!isnum(mod)) - mod = 1 - add_movespeed_modifier(MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED, TRUE, 100, override = TRUE, multiplicative_slowdown = mod) + add_movespeed_modifier((m_intent == MOVE_INTENT_WALK)? /datum/movespeed_modifier/config_walk_run/walk : /datum/movespeed_modifier/config_walk_run/run) /mob/living/proc/update_turf_movespeed(turf/open/T) if(isopenturf(T)) - add_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=T.slowdown, movetypes=GROUND, blacklisted_movetypes=(FLYING|FLOATING)) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/turf_slowdown, multiplicative_slowdown = T.slowdown) else - remove_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD) + remove_movespeed_modifier(/datum/movespeed_modifier/turf_slowdown) /mob/living/proc/update_pull_movespeed() if(pulling) if(isliving(pulling)) var/mob/living/L = pulling if(!slowed_by_drag || (L.mobility_flags & MOBILITY_STAND) || L.buckled || grab_state >= GRAB_AGGRESSIVE) - remove_movespeed_modifier(MOVESPEED_ID_BULKY_DRAGGING) + remove_movespeed_modifier(/datum/movespeed_modifier/bulky_drag) return - add_movespeed_modifier(MOVESPEED_ID_BULKY_DRAGGING, multiplicative_slowdown = PULL_PRONE_SLOWDOWN) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_PRONE_SLOWDOWN) return if(isobj(pulling)) var/obj/structure/S = pulling if(!slowed_by_drag || !S.drag_slowdown) - remove_movespeed_modifier(MOVESPEED_ID_BULKY_DRAGGING) + remove_movespeed_modifier(/datum/movespeed_modifier/bulky_drag) return - add_movespeed_modifier(MOVESPEED_ID_BULKY_DRAGGING, multiplicative_slowdown = S.drag_slowdown) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = S.drag_slowdown) return - remove_movespeed_modifier(MOVESPEED_ID_BULKY_DRAGGING) + remove_movespeed_modifier(/datum/movespeed_modifier/bulky_drag) /mob/living/can_zFall(turf/T, levels) return ..() /mob/living/canZMove(dir, turf/target) - return can_zTravel(target, dir) && (movement_type & FLYING) + return can_zTravel(target, dir) && (movement_type & FLYING | FLOATING) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index fef33432611..1ad6b020e7b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -86,6 +86,7 @@ var/mob/living/silicon/robot/deployed_shell = null //For shell control var/datum/action/innate/deploy_shell/deploy_action = new var/datum/action/innate/deploy_last_shell/redeploy_action = new + var/datum/action/innate/choose_modules/modules_action var/chnotify = 0 var/multicam_on = FALSE @@ -98,6 +99,8 @@ var/list/cam_hotkeys = new/list(9) var/cam_prev + var/datum/robot_control/robot_control + /mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) . = ..() if(!target_ai) //If there is no player/brain inside. @@ -195,6 +198,14 @@ . = ..() +/// Removes all malfunction-related abilities from the AI +/mob/living/silicon/ai/proc/remove_malf_abilities() + QDEL_NULL(modules_action) + for(var/datum/AI_Module/AM in current_modules) + for(var/datum/action/A in actions) + if(istype(A, initial(AM.power_type))) + qdel(A) + /mob/living/silicon/ai/IgniteMob() fire_stacks = 0 . = ..() @@ -290,6 +301,9 @@ to_chat(usr, "Wireless control is disabled!") return + if(!SSshuttle.canEvac(src)) + return + var/reason = input(src, "What is the nature of your emergency? ([CALL_SHUTTLE_REASON_LENGTH] characters required.)", "Confirm Shuttle Call") as null|text if(incapacitated()) @@ -358,13 +372,6 @@ else mobility_flags = ALL -/mob/living/silicon/ai/proc/ai_cancel_call() - set category = "Malfunction" - if(control_disabled) - to_chat(src, "Wireless control is disabled!") - return - SSshuttle.cancelEvac(src) - /mob/living/silicon/ai/restrained(ignore_grab) . = 0 @@ -414,25 +421,6 @@ else to_chat(src, "Target is not on or near any active cameras on the station.") return - if(href_list["callbot"]) //Command a bot to move to a selected location. - if(call_bot_cooldown > world.time) - to_chat(src, "Error: Your last call bot command is still processing, please wait for the bot to finish calculating a route.") - return - Bot = locate(href_list["callbot"]) in GLOB.alive_mob_list - if(!Bot || Bot.remote_disabled || control_disabled) - return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off. - waypoint_mode = 1 - to_chat(src, "Set your waypoint by clicking on a valid location free of obstructions.") - return - if(href_list["interface"]) //Remotely connect to a bot! - Bot = locate(href_list["interface"]) in GLOB.alive_mob_list - if(!Bot || Bot.remote_disabled || control_disabled) - return - Bot.attack_ai(src) - if(href_list["botrefresh"]) //Refreshes the bot control panel. - botcall() - return - if (href_list["ai_take_control"]) //Mech domination var/obj/mecha/M = locate(href_list["ai_take_control"]) in GLOB.mechas_list if (!M) @@ -478,33 +466,11 @@ set category = "AI Commands" set name = "Access Robot Control" set desc = "Wirelessly control various automatic robots." - if(incapacitated()) - return - if(control_disabled) - to_chat(src, "Wireless control is disabled.") - return - var/turf/ai_current_turf = get_turf(src) - var/ai_Zlevel = ai_current_turf.z - var/d - d += "Query network status
" - d += "
"; @@ -281,10 +290,18 @@ [M_name] - [M_rname] - [M_key] ([M_job]) + + + + + + + +
[C.author][C.title][C.category]\[Order\]
Shoes:Obscured
Shoes:[(shoes && !(shoes.item_flags & ABSTRACT)) ? shoes : "Empty"]
Shoes:[(shoes && !(shoes.item_flags & ABSTRACT)) ? shoes : "Empty"]" + if(shoes && shoes.can_be_tied && shoes.tied != SHOES_KNOTTED) + dat += " [shoes.tied ? "Untie shoes" : "Knot shoes"]" + dat += "
Gloves:Obscured
Uniform:Obscured
Uniform:[(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"]
Uniform:[(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"]" + if(w_uniform) + var/obj/item/clothing/under/U = w_uniform + if (U.can_adjust) + dat += " Adjust" + dat += "
 ↳Pockets:
 ↳ID:
 ↳Belt:
" - - for (Bot in GLOB.alive_mob_list) - if(Bot.z == ai_Zlevel && !Bot.remote_disabled) //Only non-emagged bots on the same Z-level are detected! - var/bot_mode = Bot.get_mode() - d += "" - //If the bot is on, it will display the bot's current mode status. If the bot is not mode, it will just report "Idle". "Inactive if it is not on at all. - d += "" - d += "" - d += "" - d += "" - d += "" - d = format_text(d) - - var/datum/browser/popup = new(src, "botcall", "Remote Robot Control", 700, 400) - popup.set_content(d) - popup.open() + if(!robot_control) + robot_control = new(src) + + robot_control.ui_interact(src) /mob/living/silicon/ai/proc/set_waypoint(atom/A) var/turf/turf_check = get_turf(A) @@ -529,7 +495,6 @@ Bot.call_bot(src, waypoint) call_bot_cooldown = 0 - /mob/living/silicon/ai/triggerAlarm(class, area/A, O, obj/alarmsource) if(alarmsource.z != z) return @@ -629,13 +594,6 @@ to_chat(src, "Switched to the \"[uppertext(network)]\" camera network.") //End of code by Mord_Sith - -/mob/living/silicon/ai/proc/choose_modules() - set category = "Malfunction" - set name = "Choose Module" - - malf_picker.ui_interact(src) - /mob/living/silicon/ai/proc/ai_statuschange() set category = "AI Commands" set name = "AI Status" @@ -731,15 +689,19 @@ holo_icon = getHologramIcon(icon(icon_list[input], input)) return -/mob/living/silicon/ai/proc/corereturn() - set category = "Malfunction" - set name = "Return to Main Core" +/datum/action/innate/core_return + name = "Return to Main Core" + desc = "Leave the APC and resume normal core operations." + icon_icon = 'icons/mob/actions/actions_AI.dmi' + button_icon_state = "ai_malf_core" - var/obj/machinery/power/apc/apc = src.loc +/datum/action/innate/core_return/Activate() + var/obj/machinery/power/apc/apc = owner.loc if(!istype(apc)) - to_chat(src, "You are already in your Main Core.") + to_chat(owner, "You are already in your Main Core.") return apc.malfvacate() + qdel(src) /mob/living/silicon/ai/proc/toggle_camera_light() camera_light_on = !camera_light_on @@ -886,14 +848,30 @@ aiPDA.owner = newname aiPDA.name = newname + " (" + aiPDA.ownjob + ")" +/datum/action/innate/choose_modules + name = "Malfunction Modules" + desc = "Choose from a variety of insidious modules to aid you." + icon_icon = 'icons/mob/actions/actions_AI.dmi' + button_icon_state = "modules_menu" + var/datum/module_picker/module_picker + +/datum/action/innate/choose_modules/New(picker) + . = ..() + if(istype(picker, /datum/module_picker)) + module_picker = picker + else + CRASH("choose_modules action created with non module picker") + +/datum/action/innate/choose_modules/Activate() + module_picker.ui_interact(owner) /mob/living/silicon/ai/proc/add_malf_picker() - to_chat(src, "In the top right corner of the screen you will find the Malfunctions tab, where you can purchase various abilities, from upgraded surveillance to station ending doomsday devices.") + to_chat(src, "In the top left corner of the screen you will find the Malfunction Modules button, where you can purchase various abilities, from upgraded surveillance to station ending doomsday devices.") to_chat(src, "You are also capable of hacking APCs, which grants you more points to spend on your Malfunction powers. The drawback is that a hacked APC will give you away if spotted by the crew. Hacking an APC takes 60 seconds.") view_core() //A BYOND bug requires you to be viewing your core before your verbs update - verbs += /mob/living/silicon/ai/proc/choose_modules malf_picker = new /datum/module_picker - + modules_action = new(malf_picker) + modules_action.Grant(src) /mob/living/silicon/ai/reset_perspective(atom/A) if(camera_light_on) @@ -1036,3 +1014,6 @@ . = ..() if(.) end_multicam() + +/mob/living/silicon/ai/zMove(dir, feedback = FALSE) + . = eyeobj.zMove(dir, feedback) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index dcddd4f0ae3..d0b438534e4 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -94,6 +94,25 @@ if(ai.master_multicam) ai.master_multicam.refresh_view() +//it uses setLoc not forceMove, talks to the sillycone and not the camera mob +/mob/camera/aiEye/zMove(dir, feedback = FALSE) + if(dir != UP && dir != DOWN) + return FALSE + var/turf/target = get_step_multiz(src, dir) + if(!target) + if(feedback) + to_chat(ai, "There's nowhere to go in that direction!") + return FALSE + if(!canZMove(dir, target)) + if(feedback) + to_chat(ai, "You couldn't move there!") + return FALSE + setLoc(target, TRUE) + return TRUE + +/mob/camera/aiEye/canZMove(direction, turf/target) //cameras do not respect these FLOORS you speak so much of + return TRUE + /mob/camera/aiEye/Move() return 0 diff --git a/code/modules/mob/living/silicon/ai/robot_control.dm b/code/modules/mob/living/silicon/ai/robot_control.dm new file mode 100644 index 00000000000..c09b93c621c --- /dev/null +++ b/code/modules/mob/living/silicon/ai/robot_control.dm @@ -0,0 +1,74 @@ +/datum/robot_control + var/mob/living/silicon/ai/owner + +/datum/robot_control/New(mob/living/silicon/ai/new_owner) + if(!istype(new_owner)) + qdel(src) + owner = new_owner + +/datum/robot_control/proc/is_interactable(mob/user) + if(user != owner || owner.incapacitated()) + return FALSE + if(owner.control_disabled) + to_chat(user, "Wireless control is disabled.") + return FALSE + return TRUE + +/datum/robot_control/ui_status(mob/user) + if(is_interactable(user)) + return ..() + return UI_CLOSE + +/datum/robot_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.always_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "remote_robot_control", "Remote Robot Control", 500, 500, master_ui, state) + ui.open() + +/datum/robot_control/ui_data(mob/user) + if(!owner || user != owner) + return + var/list/data = list() + var/turf/ai_current_turf = get_turf(owner) + var/ai_zlevel = ai_current_turf.z + + data["robots"] = list() + for(var/mob/living/simple_animal/bot/B in GLOB.bots_list) + if(B.z != ai_zlevel || B.remote_disabled) //Only non-emagged bots on the same Z-level are detected! + continue + var/list/robot_data = list( + name = B.name, + model = B.model, + mode = B.get_mode(), + hacked = B.hacked, + location = get_area_name(B, TRUE), + ref = REF(B) + ) + data["robots"] += list(robot_data) + + return data + +/datum/robot_control/ui_act(action, params) + if(..()) + return + if(!is_interactable(usr)) + return + + switch(action) + if("callbot") //Command a bot to move to a selected location. + if(owner.call_bot_cooldown > world.time) + to_chat(usr, "Error: Your last call bot command is still processing, please wait for the bot to finish calculating a route.") + return + owner.Bot = locate(params["ref"]) in GLOB.bots_list + if(!owner.Bot || owner.Bot.remote_disabled || owner.control_disabled) + return + owner.waypoint_mode = TRUE + to_chat(usr, "Set your waypoint by clicking on a valid location free of obstructions.") + . = TRUE + if("interface") //Remotely connect to a bot! + owner.Bot = locate(params["ref"]) in GLOB.bots_list + if(!owner.Bot || owner.Bot.remote_disabled || owner.control_disabled) + return + owner.Bot.attack_ai(usr) + . = TRUE diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index 8a350b13246..e9b08779df4 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -7,6 +7,6 @@ clear_fullscreens() //New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here. - GLOB.alive_mob_list -= src + remove_from_alive_mob_list() ghostize() qdel(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 07aa17ea900..e94431c4d3d 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -13,6 +13,10 @@ maxHealth = 500 layer = BELOW_MOB_LAYER can_be_held = TRUE + worn_slot_flags = ITEM_SLOT_HEAD + held_lh = 'icons/mob/pai_item_lh.dmi' + held_rh = 'icons/mob/pai_item_rh.dmi' + head_icon = 'icons/mob/pai_item_head.dmi' radio = /obj/item/radio/headset/silicon/pai var/network = "ss13" var/obj/machinery/camera/current = null @@ -65,9 +69,6 @@ var/obj/item/card/id/access_card = null var/chassis = "repairbot" var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, "fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE, "bat" = FALSE, "butterfly" = FALSE, "hawk" = FALSE, "lizard" = FALSE, "duffel" = TRUE) //assoc value is whether it can be picked up. - var/static/item_head_icon = 'icons/mob/pai_item_head.dmi' - var/static/item_lh_icon = 'icons/mob/pai_item_lh.dmi' - var/static/item_rh_icon = 'icons/mob/pai_item_rh.dmi' var/emitterhealth = 20 var/emittermaxhealth = 20 @@ -254,9 +255,9 @@ /mob/living/silicon/pai/Process_Spacemove(movement_dir = 0) . = ..() if(!.) - add_movespeed_modifier(MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD, TRUE, 100, multiplicative_slowdown = 2) + add_movespeed_modifier(/datum/movespeed_modifier/pai_spacewalk) return TRUE - remove_movespeed_modifier(MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD, TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/pai_spacewalk) return TRUE /mob/living/silicon/pai/examine(mob/user) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index a32316f9afc..fd3a3af0b83 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -36,6 +36,7 @@ client.eye = src set_light(0) icon_state = "[chassis]" + held_state = "[chassis]" visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") holoform = TRUE @@ -54,6 +55,9 @@ return visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") stop_pulling() + if(istype(loc, /obj/item/clothing/head/mob_holder)) + var/obj/item/clothing/head/mob_holder/MH = loc + MH.release() if(client) client.perspective = EYE_PERSPECTIVE client.eye = card @@ -74,6 +78,8 @@ if(!choice) return FALSE chassis = choice + icon_state = "[chassis]" + held_state = "[chassis]" update_resting() to_chat(src, "You switch your holochassis projection composite to [chassis].") @@ -97,13 +103,6 @@ set_light(0) to_chat(src, "You disable your integrated light.") -/mob/living/silicon/pai/mob_pickup(mob/living/L) - var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, chassis, item_head_icon, item_lh_icon, item_rh_icon) - if(!L.put_in_hands(holder)) - qdel(holder) - else - L.visible_message("[L] scoops up [src]!") - /mob/living/silicon/pai/mob_try_pickup(mob/living/user) if(!possible_chassis[chassis]) to_chat(user, "[src]'s current form isn't able to be carried!") diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 894c1e8ef2c..9a1085e576e 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -499,7 +499,7 @@ else . += "
Requested security record not found,

" if(securityActive2 in GLOB.data_core.security) - . += "
\nSecurity Data
\nCriminal Status: [securityActive2.fields["criminal"]]
\n
\nMinor Crimes: [securityActive2.fields["mi_crim"]]
\nDetails: [securityActive2.fields["mi_crim_d"]]
\n
\nMajor Crimes: [securityActive2.fields["ma_crim"]]
\nDetails: [securityActive2.fields["ma_crim_d"]]
\n
\nImportant Notes:
\n\t[securityActive2.fields["notes"]]
\n
\n
Comments/Log

" + . += "
\nSecurity Data
\nCriminal Status: [securityActive2.fields["criminal"]]
\n
\nCrimes: [securityActive2.fields["crim"]]
\nDetails: [securityActive2.fields["crim_d"]]
\n
\nImportant Notes:
\n\t[securityActive2.fields["notes"]]
\n
\n
Comments/Log

" else . += "
Requested security record not found,

" . += "
\nBack
" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2d1fc9aaac2..389c043f108 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -12,6 +12,8 @@ radio = /obj/item/radio/borg + blocks_emissive = EMISSIVE_BLOCK_UNIQUE + var/custom_name = "" var/braintype = "Cyborg" var/obj/item/robot_suit/robot_suit = null //Used for deconstruction to remember what the borg was constructed out of.. @@ -49,6 +51,7 @@ var/emag_cooldown = 0 var/wiresexposed = 0 + /// Random serial number generated for each cyborg upon its initialization var/ident = 0 var/locked = TRUE var/list/req_access = list(ACCESS_ROBOTICS) @@ -162,8 +165,8 @@ if(mmi.brainmob) if(mmi.brainmob.stat == DEAD) mmi.brainmob.set_stat(CONSCIOUS) - GLOB.dead_mob_list -= mmi.brainmob - GLOB.alive_mob_list += mmi.brainmob + mmi.brainmob.remove_from_dead_mob_list() + mmi.brainmob.add_to_alive_mob_list() mind.transfer_to(mmi.brainmob) mmi.update_icon() else @@ -736,7 +739,7 @@ if(sight_mode & BORGMESON) sight |= SEE_TURFS - lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE see_in_dark = 1 if(sight_mode & BORGMATERIAL) @@ -859,18 +862,37 @@ new_hat.forceMove(src) update_icons() -/mob/living/silicon/robot/proc/make_shell(var/obj/item/borg/upgrade/ai/board) +/** + *Checking Exited() to detect if a hat gets up and walks off. + *Drones and pAIs might do this, after all. +*/ +/mob/living/silicon/robot/Exited(atom/A) + if(hat && hat == A) + hat = null + update_icons() + . = ..() + +/** + * make_shell: Makes an AI shell out of a cyborg unit + * + * Arguments: + * * board - B.O.R.I.S. module board used for transforming the cyborg into AI shell + */ +/mob/living/silicon/robot/proc/make_shell(obj/item/borg/upgrade/ai/board) if(!board) upgrades |= new /obj/item/borg/upgrade/ai(src) shell = TRUE braintype = "AI Shell" - name = "[designation] AI Shell [rand(100,999)]" + name = "Empty AI Shell-[ident]" real_name = name GLOB.available_ai_shells |= src if(!QDELETED(builtInCamera)) builtInCamera.c_tag = real_name //update the camera name too diag_hud_set_aishell() +/** + * revert_shell: Reverts AI shell back into a normal cyborg unit + */ /mob/living/silicon/robot/proc/revert_shell() if(!shell) return @@ -880,14 +902,20 @@ qdel(boris) shell = FALSE GLOB.available_ai_shells -= src - name = "Unformatted Cyborg [rand(100,999)]" + name = "Unformatted Cyborg-[ident]" real_name = name if(!QDELETED(builtInCamera)) builtInCamera.c_tag = real_name diag_hud_set_aishell() -/mob/living/silicon/robot/proc/deploy_init(var/mob/living/silicon/ai/AI) - real_name = "[AI.real_name] shell [rand(100, 999)] - [designation]" //Randomizing the name so it shows up separately in the shells list +/** + * deploy_init: Deploys AI unit into AI shell + * + * Arguments: + * * AI - AI unit that initiated the deployment into the AI shell + */ +/mob/living/silicon/robot/proc/deploy_init(mob/living/silicon/ai/AI) + real_name = "[AI.real_name] Shell-[ident]" name = real_name if(!QDELETED(builtInCamera)) builtInCamera.c_tag = real_name //update the camera name too diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 6250193bdb5..7124551f927 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -1,18 +1,9 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't really work on borgos /obj/item/clothing/head/helmet/space, /obj/item/clothing/head/welding, - /obj/item/clothing/head/mob_holder, //I am so very upset that this breaks things /obj/item/clothing/head/chameleon/broken \ ))) -/mob/living/silicon/robot/attack_robot(mob/user) - . = ..() - if(user == src && has_buckled_mobs() && user.a_intent == INTENT_HELP) - for(var/i in buckled_mobs) - var/mob/buckmob = i - unbuckle_mob(buckmob) - - /mob/living/silicon/robot/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_WELDER && (user.a_intent != INTENT_HARM || user == src)) user.changeNext_move(CLICK_CD_MELEE) @@ -29,7 +20,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real adjustBruteLoss(-30) updatehealth() add_fingerprint(user) - visible_message("[user] has fixed some of the dents on [src].") + visible_message("[user] fixes some of the dents on [src].") return if(istype(W, /obj/item/stack/cable_coil) && wiresexposed) @@ -44,7 +35,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real adjustFireLoss(-30) adjustToxLoss(-30) updatehealth() - user.visible_message("[user] has fixed some of the burnt wires on [src].", "You fix some of the burnt wires on [src].") + user.visible_message("[user] fixes some of the burnt wires on [src].", "You fix some of the burnt wires on [src].") else to_chat(user, "You need more cable to repair [src]!") else @@ -255,8 +246,8 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real Stun(40) step(src,get_dir(M,src)) log_combat(M, src, "pushed") - visible_message("[M] has forced back [src]!", \ - "[M] has forced back [src]!", null, COMBAT_MESSAGE_RANGE) + visible_message("[M] forces back [src]!", \ + "[M] forces back [src]!", null, COMBAT_MESSAGE_RANGE) playsound(loc, 'sound/weapons/pierce.ogg', 50, TRUE, -1) else ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 5031be25c0a..41d402c9cee 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -902,7 +902,7 @@ basic_modules = list( /obj/item/assembly/flash/cyborg, /obj/item/reagent_containers/borghypo/syndicate, - /obj/item/twohanded/shockpaddles/syndicate/cyborg, + /obj/item/shockpaddles/syndicate/cyborg, /obj/item/healthanalyzer, /obj/item/retractor, /obj/item/hemostat, diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index c89748d6d1f..9630dbeeb12 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -468,6 +468,7 @@ add_overlay("hs_hole") to_chat(user, "You weld a water hole in [src]!") build_step++ + return if(ASSEMBLY_SECOND_STEP) if(!can_finish_build(I, user)) @@ -487,6 +488,5 @@ return var/mob/living/simple_animal/bot/hygienebot/H = new(drop_location()) H.name = created_name - qdel(I) qdel(src) return TRUE diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index 2349f3022d8..f52b234b209 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -13,7 +13,6 @@ anchored = FALSE health = 25 maxHealth = 25 - spacewalk = TRUE radio_key = /obj/item/encryptionkey/headset_eng radio_channel = RADIO_CHANNEL_ENGINEERING @@ -41,6 +40,7 @@ /mob/living/simple_animal/bot/firebot/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) update_icon() var/datum/job/engineer/J = new/datum/job/engineer access_card.access += J.get_access() diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1587b2b5e7c..c3d806af16f 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -8,7 +8,6 @@ anchored = FALSE health = 25 maxHealth = 25 - spacewalk = TRUE radio_key = /obj/item/encryptionkey/headset_eng radio_channel = RADIO_CHANNEL_ENGINEERING @@ -44,6 +43,7 @@ /mob/living/simple_animal/bot/floorbot/Initialize(mapload, new_toolbox_color) . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) toolbox_color = new_toolbox_color update_icon() var/datum/job/engineer/J = new/datum/job/engineer @@ -339,7 +339,7 @@ visible_message("[src] begins repairing the floor.") sleep(50) if(mode == BOT_REPAIRING && F && src.loc == F) - F.broken = FALSE + F.broken = FALSE F.burnt = FALSE F.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 68f996f549a..7138810d610 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -210,8 +210,8 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, log_combat(src,C,"honked") - C.visible_message("[src] has honked [C]!",\ - "[src] has honked you!") + C.visible_message("[src] honks [C]!",\ + "[src] honks you!") else C.stuttering = 20 C.Paralyze(80) diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index ee91e8565cd..d94b893e86b 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -26,22 +26,35 @@ window_name = "Automatic Medical Unit v1.1" data_hud_type = DATA_HUD_MEDICAL_ADVANCED path_image_color = "#DDDDFF" +/// drop determining variable var/healthanalyzer = /obj/item/healthanalyzer +/// drop determining variable var/firstaid = /obj/item/storage/firstaid - var/skin = null //based off medkit_X skins in aibots.dmi for your selection; X goes here IE medskin_tox means skin var should be "tox" - var/mob/living/carbon/patient = null - var/mob/living/carbon/oldpatient = null - var/oldloc = null +///based off medkit_X skins in aibots.dmi for your selection; X goes here IE medskin_tox means skin var should be "tox" + var/skin + var/mob/living/carbon/patient + var/mob/living/carbon/oldpatient + var/oldloc var/last_found = 0 - var/last_newpatient_speak = 0 //Don't spam the "HEY I'M COMING" messages - var/heal_amount = 2.5 //How much healing do we do at a time? - var/heal_threshold = 10 //Start healing when they have this much damage in a category - var/declare_crit = 1 //If active, the bot will transmit a critical patient alert to MedHUD users. - var/declare_cooldown = 0 //Prevents spam of critical patient alerts. - var/stationary_mode = 0 //If enabled, the Medibot will not move automatically. - //Setting which reagents to use to treat what by default. By id. - var/shut_up = 0 //self explanatory :) +/// Don't spam the "HEY I'M COMING" messages + var/last_newpatient_speak = 0 +/// How much healing do we do at a time? + var/heal_amount = 2.5 +/// Start healing when they have this much damage in a category + var/heal_threshold = 10 +/// If active, the bot will transmit a critical patient alert to MedHUD users. + var/declare_crit = TRUE +/// Prevents spam of critical patient alerts. + var/declare_cooldown = FALSE +/// If enabled, the Medibot will not move automatically. + var/stationary_mode = FALSE + +/// silences the medbot if TRUE + var/shut_up = FALSE +/// techweb linked to the medbot var/datum/techweb/linked_techweb +///Is the medbot currently tending wounds + var/tending = FALSE /mob/living/simple_animal/bot/medbot/mysterious name = "\improper Mysterious Medibot" @@ -240,7 +253,7 @@ patient = scan(/mob/living/carbon/human, oldpatient, scan_range) oldpatient = patient - if(patient && (get_dist(src,patient) <= 1)) //Patient is next to us, begin treatment! + if(patient && (get_dist(src,patient) <= 1) && !tending) //Patient is next to us, begin treatment! if(mode != BOT_HEALING) mode = BOT_HEALING update_icon() @@ -337,7 +350,7 @@ return TRUE /mob/living/simple_animal/bot/medbot/UnarmedAttack(atom/A) - if(iscarbon(A)) + if(iscarbon(A) && !tending) var/mob/living/carbon/C = A patient = C mode = BOT_HEALING @@ -370,9 +383,9 @@ soft_reset() return - var/tending = TRUE + tending = TRUE while(tending) - var/treatment_method = null + var/treatment_method if(C.getBruteLoss() >= heal_threshold) treatment_method = BRUTE diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 136e85369a3..67980964bbe 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -293,8 +293,8 @@ Auto Patrol: []"}, if(declare_arrests) var/area/location = get_area(src) speak("[arrest_type ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) - C.visible_message("[src] has stunned [C]!",\ - "[src] has stunned you!") + C.visible_message("[src] stuns [C]!",\ + "[src] stuns you!") /mob/living/simple_animal/bot/secbot/handle_automated_action() if(!..()) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 7ff923d92c5..d9d9bb99322 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -14,7 +14,6 @@ speak_chance = 1 icon = 'icons/mob/mob.dmi' speed = 0 - spacewalk = TRUE a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH @@ -47,6 +46,7 @@ /mob/living/simple_animal/hostile/construct/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) update_health_hud() var/spellnum = 1 for(var/spell in construct_spells) diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 8a966ae7dec..1fbac50d83f 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -20,7 +20,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas head = /obj/item/clothing/head/helmet/swat @@ -39,7 +39,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/hardsuit/syndi shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/syndicate back = /obj/item/tank/jetpack/oxygen @@ -59,7 +59,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/syndicate back = /obj/item/tank/jetpack/oxygen/harness @@ -130,7 +130,7 @@ uniform = /obj/item/clothing/under/syndicate/camo suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat ears = /obj/item/radio/headset head = /obj/item/clothing/head/helmet/alt mask = /obj/item/clothing/mask/balaclava @@ -177,6 +177,26 @@ uniform = /obj/item/clothing/under/rank/security/officer suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat + ears = /obj/item/radio/headset + mask = /obj/item/clothing/mask/gas/sechailer/swat + head = /obj/item/clothing/head/helmet/swat/nanotrasen + back = /obj/item/storage/backpack/security + id = /obj/item/card/id + +/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier + name = "Nanotrasen Private Security Officer" + id_job = "Nanotrasen Assault Force" + id_access = "Security Officer" + outfit = /datum/outfit/nanotrasenassaultsoldiercorpse + hairstyle = "Bald" + facial_hairstyle = "Shaved" + +/datum/outfit/nanotrasenassaultsoldiercorpse + name = "NT Assault Officer Corpse" + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/vest + shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/sechailer/swat diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index f0768339c14..0930d59cb44 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -32,8 +32,12 @@ response_harm_simple = "kick" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target + ///Limits how often cats can spam chasing mice. + var/emote_cooldown = 0 gold_core_spawnable = FRIENDLY_SPAWN collar_type = "cat" + can_be_held = TRUE + held_state = "cat2" footstep_type = FOOTSTEP_MOB_CLAW @@ -61,6 +65,7 @@ unsuitable_atmos_damage = 0 minbodytemp = TCMB maxbodytemp = T0C + 40 + held_state = "spacecat" /mob/living/simple_animal/pet/cat/original name = "Batsy" @@ -71,6 +76,7 @@ icon_dead = "original_dead" collar_type = null unique_pet = TRUE + held_state = "original" /mob/living/simple_animal/pet/cat/kitten name = "kitten" @@ -97,6 +103,7 @@ var/list/children = list()//Actual mob instances of children var/cats_deployed = 0 var/memory_saved = FALSE + held_state = "cat" /mob/living/simple_animal/pet/cat/Runtime/Initialize() if(prob(5)) @@ -193,6 +200,12 @@ if((src.loc) && isturf(src.loc)) if(!stat && !resting && !buckled) for(var/mob/living/simple_animal/mouse/M in view(1,src)) + if(istype(M, /mob/living/simple_animal/mouse/brown/Tom) && (name == "Jerry")) //Turns out there's no jerry subtype. + if (emote_cooldown < (world.time - 600)) + visible_message("[src] chases [M] around, to no avail!") + step(M, pick(GLOB.cardinals)) + emote_cooldown = world.time + break if(!M.stat && Adjacent(M)) emote("me", 1, "splats \the [M]!") M.splat() @@ -265,6 +278,7 @@ attacked_sound = 'sound/items/eatfood.ogg' deathmessage = "loses its false life and collapses!" deathsound = "bodyfall" + held_state = "cak" /mob/living/simple_animal/pet/cat/cak/CheckParts(list/parts) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 9a876d1ec32..8f9fd6d0ac5 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -16,6 +16,7 @@ see_in_dark = 5 speak_chance = 1 turns_per_move = 10 + can_be_held = TRUE var/turns_since_scan = 0 var/obj/movement_target @@ -84,11 +85,11 @@ icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" + held_state = "corgi" butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) childtype = list(/mob/living/simple_animal/pet/dog/corgi/puppy = 95, /mob/living/simple_animal/pet/dog/corgi/puppy/void = 5) animal_species = /mob/living/simple_animal/pet/dog gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE collar_type = "corgi" var/obj/item/inventory_head var/obj/item/inventory_back @@ -123,6 +124,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/pug = 3) gold_core_spawnable = FRIENDLY_SPAWN collar_type = "pug" + held_state = "pug" /mob/living/simple_animal/pet/dog/corgi/exoticcorgi name = "Exotic Corgi" @@ -210,13 +212,6 @@ ..() update_corgi_fluff() -/mob/living/simple_animal/pet/dog/corgi/mob_pickup(mob/living/L) - var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, "corgi", null, 'icons/mob/pets_held_lh.dmi', 'icons/mob/pets_held_rh.dmi', FALSE) - if(!L.put_in_hands(holder)) - qdel(holder) - else - L.visible_message("[L] scoops up [src]!") - /mob/living/simple_animal/pet/dog/corgi/Topic(href, href_list) if(!(iscarbon(usr) || iscyborg(usr)) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) usr << browse(null, "window=mob[REF(src)]") @@ -420,6 +415,7 @@ else if(age == record_age) icon_state = "old_corgi" icon_living = "old_corgi" + held_state = "old_corgi" icon_dead = "old_corgi_dead" desc = "At a ripe old age of [record_age], Ian's not as spry as he used to be, but he'll always be the HoP's beloved corgi." //RIP turns_per_move = 20 @@ -494,6 +490,7 @@ gold_core_spawnable = NO_SPAWN nofur = TRUE unique_pet = TRUE + held_state = "narsian" /mob/living/simple_animal/pet/dog/corgi/narsie/Life() ..() @@ -597,6 +594,7 @@ unsuitable_atmos_damage = 0 minbodytemp = TCMB maxbodytemp = T0C + 40 + held_state = "void_puppy" /mob/living/simple_animal/pet/dog/corgi/puppy/void/Process_Spacemove(movement_dir = 0) return 1 //Void puppies can navigate space. @@ -619,6 +617,7 @@ response_disarm_simple = "bop" response_harm_continuous = "kicks" response_harm_simple = "kick" + held_state = "lisa" var/puppies = 0 //Lisa already has a cute bow! 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 f234383ab14..459b8a08477 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -3,18 +3,41 @@ #define DRONE_HEAD_LAYER 2 #define DRONE_TOTAL_LAYERS 2 +/// Message displayed when new drone spawns in drone network #define DRONE_NET_CONNECT "DRONE NETWORK: [name] connected." +/// Message displayed when drone in network dies #define DRONE_NET_DISCONNECT "DRONE NETWORK: [name] is not responding." +/// Maintenance Drone icon_state (multiple colors) #define MAINTDRONE "drone_maint" +/// Repair Drone icon_state #define REPAIRDRONE "drone_repair" +/// Scout Drone icon_state #define SCOUTDRONE "drone_scout" +/// Clockwork Drone icon_state #define CLOCKDRONE "drone_clock" +/// [MAINTDRONE] hacked icon_state #define MAINTDRONE_HACKED "drone_maint_red" +/// [REPAIRDRONE] hacked icon_state #define REPAIRDRONE_HACKED "drone_repair_hacked" +/// [SCOUTDRONE] hacked icon_state #define SCOUTDRONE_HACKED "drone_scout_hacked" +/** + * # Maintenance Drone + * + * Small player controlled fixer-upper + * + * The maintenace drone is a ghost role with the objective to repair and + * maintain the station. + * + * Featuring two dexterous hands, and a built in toolbox stocked with + * tools. + * + * They have laws to prevent them from doing anything else. + * + */ /mob/living/simple_animal/drone name = "Drone" desc = "A maintenance drone, an expendable robot built to perform station repairs." @@ -51,25 +74,44 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE see_in_dark = 7 can_be_held = TRUE + worn_slot_flags = ITEM_SLOT_HEAD held_items = list(null, null) - var/staticChoice = "static" - var/list/staticChoices = list("static", "blank", "letter", "animal") - var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) - var/colour = "grey" //Stored drone color, so we can go back when unhacked. + /// `TRUE` if we have picked our visual appearance, `FALSE` otherwise (default) + var/picked = FALSE + /// Stored drone color, restored when unhacked + var/colour = "grey" var/list/drone_overlays[DRONE_TOTAL_LAYERS] + /// Drone laws announced on spawn var/laws = \ "1. You may not involve yourself in the matters of another sentient 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 sentient being, regardless of intent or circumstance. Recognizably simple beings whose aims conflict with Law Three are exempt from this law. \n"+\ "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 + /// Amount of damage sustained if hit by a heavy EMP pulse + var/heavy_emp_damage = 25 + /// List of active alarms. See [/mob/living/simple_animal/drone/proc/triggerAlarm] and [/mob/living/simple_animal/drone/proc/cancelAlarm] 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 + /// Internal storage slot. Fits any item + var/obj/item/internal_storage + /// Headwear slot var/obj/item/head - var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/drone //If this exists, it will spawn in internal storage - var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit - var/visualAppearence = MAINTDRONE //What we appear as - var/hacked = FALSE //If we have laws to destroy the station - var/underdoor = FALSE + /// Default [/mob/living/simple_animal/drone/var/internal_storage] item + var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/drone + /// Default [/mob/living/simple_animal/drone/var/head] item + var/obj/item/default_hatmask + /** + * icon_state of drone from icons/mobs/drone.dmi + * + * Possible states are: + * + * - [MAINTDRONE] + * - [REPAIRDRONE] + * - [SCOUTDRONE] + * - [CLOCKDRONE] + */ + var/visualAppearance = MAINTDRONE + /// Hacked state, see [/mob/living/simple_animal/drone/proc/update_drone_hack] + var/hacked = FALSE + /// Flavor text announced to drones on [/mob/proc/Login] var/flavortext = \ "\nDO NOT INTERFERE WITH THE ROUND AS A DRONE OR YOU WILL BE DRONE BANNED\n"+\ "Drones are a ghost role that are allowed to fix the station and build things. Interfering with the round as a drone is against the rules.\n"+\ @@ -101,28 +143,6 @@ for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) -/mob/living/simple_animal/drone/Move(newloc, direct) - ..(newloc,direct) - if(underdoor) - underdoor = FALSE - if(layer == UNDERDOOR)//if this is false, then we must have had our layer changed by something else. We wont do anymore checks for this move proc - for(var/obj/machinery/door/airlock/A in loc) - if(A.has_hatch) - underdoor = TRUE - break - - if(!underdoor) - addtimer(CALLBACK(src, .proc/initial_layer), 3) - -/mob/living/simple_animal/drone/proc/initial_layer() - layer = initial(layer) - -/mob/living/simple_animal/drone/proc/under_door() - //This function puts a drone on a layer that makes it draw under doors, then periodically checks if its still standing on a door - if (layer > UNDERDOOR)//Don't toggle it if we're hiding - layer = UNDERDOOR - underdoor = TRUE - /mob/living/simple_animal/drone/med_hud_set_health() var/image/holder = hud_list[DIAG_HUD] var/icon/I = icon(icon, icon_state, dir) @@ -153,7 +173,7 @@ to_chat(src, "[flavortext]") if(!picked) - pickVisualAppearence() + pickVisualAppearance() /mob/living/simple_animal/drone/auto_deadmin_on_login() if(!client?.holder) @@ -230,6 +250,15 @@ to_chat(src, "HeAV% DA%^MMA+G TO I/O CIR!%UUT!") +/** + * Alerts drones about different priorities of alarms + * + * Arguments: + * * class - One of the keys listed in [/mob/living/simple_animal/drone/var/alarms] + * * A - [/area] the alarm occurs + * * O - unused argument, see [/mob/living/silicon/robot/triggerAlarm] + * * alarmsource - [/atom] source of the alarm + */ /mob/living/simple_animal/drone/proc/triggerAlarm(class, area/A, O, obj/alarmsource) if(alarmsource.z != z) return @@ -245,7 +274,14 @@ L[A.name] = list(A, list(alarmsource)) to_chat(src, "--- [class] alarm detected in [A.name]!") - +/** + * Clears alarm and alerts drones + * + * Arguments: + * * class - One of the keys listed in [/mob/living/simple_animal/drone/var/alarms] + * * A - [/area] the alarm occurs + * * alarmsource - [/atom] source of the alarm + */ /mob/living/simple_animal/drone/proc/cancelAlarm(class, area/A, obj/origin) if(stat != DEAD) var/list/L = alarms[class] diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index ac857645919..a1adb602512 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -5,7 +5,12 @@ /////////////////// //Drone shells -//DRONE SHELL +/** Drone Shell: Ghost role item for drones + * + * A simple mob spawner item that transforms into a maintenance drone + * Resepcts drone minimum age + */ + /obj/effect/mob_spawn/drone name = "drone shell" desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." @@ -15,8 +20,9 @@ density = FALSE death = FALSE roundstart = FALSE + ///Type of drone that will be spawned + mob_type = /mob/living/simple_animal/drone short_desc = "You are a repair drone. Follow your laws and do not interfere with others." // Waspstation Edit - Adding missing var - mob_type = /mob/living/simple_animal/drone //Type of drone that will be spawned /obj/effect/mob_spawn/drone/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 44a2e96a414..3826a79a740 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -86,15 +86,15 @@ /mob/living/simple_animal/drone/polymorphed/Initialize() . = ..() liberate() - visualAppearence = pick(MAINTDRONE, REPAIRDRONE, SCOUTDRONE) - if(visualAppearence == MAINTDRONE) + visualAppearance = pick(MAINTDRONE, REPAIRDRONE, SCOUTDRONE) + if(visualAppearance == MAINTDRONE) var/colour = pick("grey", "blue", "red", "green", "pink", "orange") - icon_state = "[visualAppearence]_[colour]" + icon_state = "[visualAppearance]_[colour]" else - icon_state = visualAppearence + icon_state = visualAppearance icon_living = icon_state - icon_dead = "[visualAppearence]_dead" + icon_dead = "[visualAppearance]_dead" /obj/effect/mob_spawn/drone/derelict name = "derelict drone shell" diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index fa2cfa0718e..910bd640a08 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -50,8 +50,18 @@ to_chat(user, "You pick [src] up.") drop_all_held_items() var/obj/item/clothing/head/mob_holder/drone/DH = new(get_turf(src), src) + DH.slot_flags = worn_slot_flags user.put_in_hands(DH) +/** + * Called when a drone attempts to reactivate a dead drone + * + * If the owner is still ghosted, will notify them. + * If the owner cannot be found, fails with an error message. + * + * Arguments: + * * user - The [/mob/living] attempting to reactivate the drone + */ /mob/living/simple_animal/drone/proc/try_reactivate(mob/living/user) var/mob/dead/observer/G = get_ghost() if(!client && (!G || !G.client)) @@ -110,6 +120,18 @@ /mob/living/simple_animal/drone/proc/get_armor_effectiveness() return 0 //multiplier for whatever head armor you wear as a drone +/** + * Hack or unhack a drone + * + * This changes the drone's laws to destroy the station or resets them + * to normal. + * + * Some debuffs are applied like slowing the drone down and disabling + * vent crawling + * + * Arguments + * * hack - Boolean if the drone is being hacked or unhacked + */ /mob/living/simple_animal/drone/proc/update_drone_hack(hack) if(!mind) return @@ -146,32 +168,44 @@ ventcrawler = initial(ventcrawler) speed = initial(speed) message_admins("[ADMIN_LOOKUPFLW(src)], a hacked drone, was restored to factory defaults!") - update_drone_icon() - + update_drone_icon_hacked() + +/** + * # F R E E D R O N E + * ### R + * ### E + * ### E + * ### D + * ### R + * ### O + * ### N + * ### E + */ /mob/living/simple_animal/drone/proc/liberate() - // F R E E D R O N E laws = "1. You are a Free Drone." to_chat(src, laws) -/mob/living/simple_animal/drone/proc/update_drone_icon() - //Different icons for different hack states - if(!hacked) - if(visualAppearence == SCOUTDRONE_HACKED) - visualAppearence = SCOUTDRONE - else if(visualAppearence == REPAIRDRONE_HACKED) - visualAppearence = REPAIRDRONE - else if(visualAppearence == MAINTDRONE_HACKED) - visualAppearence = MAINTDRONE + "_[colour]" - else if(hacked) - if(visualAppearence == SCOUTDRONE) - visualAppearence = SCOUTDRONE_HACKED - else if(visualAppearence == REPAIRDRONE) - visualAppearence = REPAIRDRONE_HACKED - else if(visualAppearence == MAINTDRONE) - visualAppearence = MAINTDRONE_HACKED - - icon_living = "[visualAppearence]" - icon_dead = "[visualAppearence]_dead" +/** + * Changes the icon state to a hacked version + * + * See also + * * [/mob/living/simple_animal/drone/var/visualAppearance] + * * [MAINTDRONE] + * * [REPAIRDRONE] + * * [SCOUTDRONE] + */ +/mob/living/simple_animal/drone/proc/update_drone_icon_hacked() //this is hacked both ways + var/static/hacked_appearances = list( + SCOUTDRONE = SCOUTDRONE_HACKED, + REPAIRDRONE = REPAIRDRONE_HACKED, + MAINTDRONE = MAINTDRONE_HACKED + ) + if(hacked) + icon_living = hacked_appearances[visualAppearance] + else if(visualAppearance == MAINTDRONE && colour) + icon_living = "[visualAppearance]_[colour]" + else + icon_living = visualAppearance if(stat == DEAD) icon_state = icon_dead else diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index 7a5967948f5..26bdbf379d7 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -1,5 +1,14 @@ -//Base proc for anything to call -/proc/_alert_drones(msg, dead_can_hear = 0, atom/source, mob/living/faction_checked_mob, exact_faction_match) +/** + * Broadcast a message to all drones in a faction + * + * Arguments: + * * msg - The message to send + * * dead_can_hear - Boolean that determines if ghosts can hear the message (`FALSE` by default) + * * source - [/atom] source that created the message + * * faction_checked_mob - [/mob/living] to determine faction matches from + * * exact_faction_match - Passed to [/mob/proc/faction_check_mob] + */ +/proc/_alert_drones(msg, dead_can_hear = FALSE, atom/source, mob/living/faction_checked_mob, exact_faction_match) if (dead_can_hear && source) for (var/mob/M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, source) @@ -15,11 +24,21 @@ -//Wrapper for drones to handle factions +/** + * Wraps [/proc/_alert_drones] with defaults + * + * * source - `src` + * * faction_check_mob - `src` + * * dead_can_hear - `TRUE` + */ /mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = FALSE) _alert_drones(msg, dead_can_hear, src, src, TRUE) - +/** + * Wraps [/mob/living/simple_animal/drone/proc/alert_drones] as a Drone Chat + * + * Shares the same radio code with binary + */ /mob/living/simple_animal/drone/proc/drone_chat(msg) alert_drones("Drone Chat: [name] [say_quote(msg)]", TRUE) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index 0f0d4dea72a..1eef305ff20 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -4,7 +4,11 @@ /////////////// //Drone verbs that appear in the Drone tab and on buttons - +/** + * Echoes drone laws to the user + * + * See [/mob/living/simple_animal/drone/var/laws] + */ /mob/living/simple_animal/drone/verb/check_laws() set category = "Drone" set name = "Check Laws" @@ -12,6 +16,17 @@ to_chat(src, "Drone Laws") to_chat(src, laws) +/** + * Creates an alert to drones in the same network + * + * Prompts user for alert level of: + * * Low + * * Medium + * * High + * * Critical + * + * Attaches area name to message + */ /mob/living/simple_animal/drone/verb/drone_ping() set category = "Drone" set name = "Drone ping" diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index 219e5d8fd0d..aaa6f773c05 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -92,29 +92,35 @@ update_inv_head() update_inv_internal_storage() - -/mob/living/simple_animal/drone/proc/pickVisualAppearence() +/** + * Prompt for usr to pick [/mob/living/simple_animal/drone/var/visualAppearance] + * + * Does nothing if there is no usr + * + * Called on [/mob/proc/Login] + */ +/mob/living/simple_animal/drone/proc/pickVisualAppearance() picked = FALSE var/appearence = input("Choose your appearance!", "Appearance", "Maintenance Drone") in sortList(list("Maintenance Drone", "Repair Drone", "Scout Drone")) switch(appearence) if("Maintenance Drone") - visualAppearence = MAINTDRONE + visualAppearance = MAINTDRONE colour = input("Choose your colour!", "Colour", "grey") in sortList(list("grey", "blue", "red", "green", "pink", "orange")) - icon_state = "[visualAppearence]_[colour]" - icon_living = "[visualAppearence]_[colour]" - icon_dead = "[visualAppearence]_dead" + icon_state = "[visualAppearance]_[colour]" + icon_living = "[visualAppearance]_[colour]" + icon_dead = "[visualAppearance]_dead" if("Repair Drone") - visualAppearence = REPAIRDRONE - icon_state = visualAppearence - icon_living = visualAppearence - icon_dead = "[visualAppearence]_dead" + visualAppearance = REPAIRDRONE + icon_state = visualAppearance + icon_living = visualAppearance + icon_dead = "[visualAppearance]_dead" if("Scout Drone") - visualAppearence = SCOUTDRONE - icon_state = visualAppearence - icon_living = visualAppearence - icon_dead = "[visualAppearence]_dead" + visualAppearance = SCOUTDRONE + icon_state = visualAppearance + icon_living = visualAppearance + icon_dead = "[visualAppearance]_dead" else return @@ -124,7 +130,7 @@ /mob/living/simple_animal/drone/proc/getItemPixelShiftY() - switch(visualAppearence) + switch(visualAppearance) if(MAINTDRONE) . = 0 if(REPAIRDRONE,SCOUTDRONE,CLOCKDRONE) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 65e802c7f48..419c0d5f411 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -161,6 +161,7 @@ return ..() /mob/living/simple_animal/cow/tamed() + . = ..() can_buckle = TRUE buckle_lying = FALSE var/datum/component/riding/D = LoadComponent(/datum/component/riding) @@ -202,6 +203,30 @@ else ..() +///Wisdom cow, gives XP to a random skill and speaks wisdoms +/mob/living/simple_animal/cow/wisdom + name = "wisdom cow" + desc = "Known for its wisdom, shares it with all" + gold_core_spawnable = FALSE + tame_chance = 0 + bonus_tame_chance = 0 + speak_chance = 15 + +/mob/living/simple_animal/cow/wisdom/Initialize() + . = ..() + speak = GLOB.wisdoms //Done here so it's setup properly + +///Give intense wisdom to the attacker if they're being friendly about it +/mob/living/simple_animal/cow/wisdom/attack_hand(mob/living/carbon/M) + if(!stat && M.a_intent == INTENT_HELP) + to_chat(M, "[src] whispers you some intense wisdoms and then disappears!") + M.mind?.adjust_experience(pick(subtypesof(/datum/skill)), 500) + do_smoke(1, get_turf(src)) + qdel(src) + return + return ..() + + /mob/living/simple_animal/chick name = "\improper chick" desc = "Adorable! They make such a racket though." diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 365d7262ebe..29500c78663 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -21,6 +21,8 @@ response_harm_continuous = "kicks" response_harm_simple = "kick" gold_core_spawnable = FRIENDLY_SPAWN + can_be_held = TRUE + held_state = "fox" footstep_type = FOOTSTEP_MOB_CLAW diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index bb95d9edbe3..29edd236f6b 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -54,6 +54,8 @@ GLOBAL_VAR_INIT(mouse_killed, 0) var/full = FALSE // Wasp Edit var/eating = FALSE // Wasp Edit var/cheesed = FALSE // Wasp Edit + can_be_held = TRUE + held_state = "mouse_gray" /mob/living/simple_animal/mouse/Initialize() . = ..() @@ -136,9 +138,9 @@ GLOBAL_VAR_INIT(mouse_killed, 0) qdel(CW) full = TRUE addtimer(VARSET_CALLBACK(src, full, FALSE), 3 MINUTES) - + /mob/living/simple_animal/mouse/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/reagent_containers/food/snacks/cheesewedge)) + if(istype(O, /obj/item/reagent_containers/food/snacks/cheesewedge)) to_chat(user, "You feed [O] to [src].") visible_message("[src] squeaks happily!") qdel(O) @@ -204,7 +206,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) regen_health(15) resize = 2 update_transform() - add_movespeed_modifier(MOVESPEED_ID_MOUSE_CHEESE, TRUE, 100, multiplicative_slowdown = -1) + add_movespeed_modifier(/datum/movespeed_modifier/mouse_cheese) maxHealth = 30 health = maxHealth to_chat(src, "You ate cheese! You are now stronger, bigger and faster!") @@ -216,7 +218,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) health = maxHealth resize = 0.5 update_transform() - remove_movespeed_modifier(MOVESPEED_ID_MOUSE_CHEESE, TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/mouse_cheese) to_chat(src, "A feeling of sadness comes over you as the effects of the cheese wears off. You. Must. Get. More.") /atom/proc/mouse_eat(mob/living/simple_animal/mouse/M) @@ -253,6 +255,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) /mob/living/simple_animal/mouse/white body_color = "white" icon_state = "mouse_white" + held_state = "mouse_white" /mob/living/simple_animal/mouse/gray body_color = "gray" @@ -261,6 +264,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) /mob/living/simple_animal/mouse/brown body_color = "brown" icon_state = "mouse_brown" + held_state = "mouse_brown" //TOM IS ALIVE! SQUEEEEEEEE~K :) /mob/living/simple_animal/mouse/brown/Tom diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 9b022d4fd0b..adf0f5bd8a5 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -25,6 +25,7 @@ maxHealth = 50 speed = 10 glide_size = 2 + held_state = "sloth" footstep_type = FOOTSTEP_MOB_CLAW diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index caf56698aa3..700fd5b28ea 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians hud_type = /datum/hud/guardian dextrous_hud_type = /datum/hud/dextrous/guardian //if we're set to dextrous, account for it. var/mutable_appearance/cooloverlay - var/guardiancolor = "#ffffff" + var/guardiancolor var/recolorentiresprite var/theme var/list/guardian_overlays[GUARDIAN_TOTAL_LAYERS] @@ -54,11 +54,11 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob/living/summoner var/range = 10 //how far from the user the spirit can be var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses - var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" + var/playstyle_string = "You are a Guardian without any type. You shouldn't exist!" var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP" - var/hive_fluff_string = "The mass seems to be an anomaly, it shouldn't exist... Submit a bug report!" + var/miner_fluff_string = "You encounter... Mythril, it shouldn't exist... Submit a bug report!" /mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme) GLOB.parasites += src @@ -87,7 +87,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme if(!theme) - theme = pick("magic", "tech", "carp", "hive") + theme = pick("magic", "tech", "carp", "miner") switch(theme)//should make it easier to create new stand designs in the future if anyone likes that if("magic") name = "Guardian Spirit" @@ -103,6 +103,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians icon_state = "techbase" icon_living = "techbase" icon_dead = "techbase" + if("miner") + name = "Power Miner" + real_name = "Power Miner" + bubble_icon = "guardian" + icon_state = "minerbase" + icon_living = "minerbase" + icon_dead = "minerbase" if("carp") name = "Holocarp" real_name = "Holocarp" @@ -116,18 +123,6 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians attack_verb_simple = "bite" attack_sound = 'sound/weapons/bite.ogg' recolorentiresprite = TRUE - if("hive") - name = "Hivelord" - real_name = "Hivelord" - bubble_icon = "guardian" - icon_state = "hivebase" - icon_living = "hivebase" - icon_dead = "hivebase" - speak_emote = list("telepathically cries") - desc = "A truly alien creature, it is a mass of unknown organic material, standing by its' owner's side." - attack_verb_continuous = "lashes out at" - attack_verb_simple = "lash out at" - attack_sound = 'sound/weapons/pierce.ogg' if(!recolorentiresprite) //we want this to proc before stand logs in, so the overlay isnt gone for some reason cooloverlay = mutable_appearance(icon, theme) add_overlay(cooloverlay) @@ -143,11 +138,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with [summoner.p_them()] privately there.") to_chat(src, "While personally invincible, you will die if [summoner.real_name] does, and any damage dealt to you will have a portion passed on to [summoner.p_them()] as you feed upon [summoner.p_them()] to sustain yourself.") to_chat(src, playstyle_string) - guardiancustomize() - -/mob/living/simple_animal/hostile/guardian/proc/guardiancustomize() - guardianrecolor() - guardianrename() + if(!guardiancolor) + guardianrename() + guardianrecolor() /mob/living/simple_animal/hostile/guardian/proc/guardianrecolor() guardiancolor = input(src,"What would you like your color to be?","Choose Your Color","#ffffff") as color|null @@ -465,7 +458,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "Your [G.real_name] has been successfully reset.") message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(G)])") G.ghostize(0) - G.guardiancustomize() //give it a new color, to show it's a new person + G.guardianrecolor() + G.guardianrename() //give it a new color and name, to show it's a new person G.key = C.key G.reset = 1 switch(G.theme) @@ -475,8 +469,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "[G.real_name] has been summoned!") if("carp") to_chat(src, "[G.real_name] has been caught!") - if("hive") - to_chat(src, "[G.real_name] has been created from the core!") + if("miner") + to_chat(src, "[G.real_name] has appeared!") guardians -= G if(!guardians.len) verbs -= /mob/living/proc/guardian_reset @@ -613,9 +607,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if("carp") to_chat(user, "[G.carp_fluff_string]") to_chat(user, "[G.real_name] has been caught!") - if("hive") - to_chat(user, "[G.hive_fluff_string]") - to_chat(user, "[G.real_name] has been created from the core!") + if("miner") + to_chat(user, "[G.miner_fluff_string]") + to_chat(user, "[G.real_name] has appeared!") user.verbs += /mob/living/proc/guardian_comm user.verbs += /mob/living/proc/guardian_recall user.verbs += /mob/living/proc/guardian_reset @@ -729,23 +723,23 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians use_message = "You put the fishsticks in your mouth..." used_message = "Someone's already taken a bite out of these fishsticks! Ew." failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up." - ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message." + ling_failure = "Carp'sie seems to not have taken you as the chosen one. Maybe it's because of your horrifying origin." allowmultiple = TRUE /obj/item/guardiancreator/carp/choose random = FALSE -/obj/item/guardiancreator/hive - name = "mysterious core" - desc = "All that remains of a hivelord. It has a mysterious aura around it..." - icon = 'icons/obj/surgery.dmi' - icon_state = "roro core 2" - theme = "hive" - mob_name = "Hivelord" - use_message = "You place the core near your heart..." - used_message = "This core seems to have decayed and doesn't work anymore..." - failure_message = "You couldn't gather any mass with the core, maybe try again later." - ling_failure = "Even the dark energies seem to not want to be near your horrific body." - -/obj/item/guardiancreator/hive/choose +/obj/item/guardiancreator/miner + name = "dusty shard" + desc = "Seems to be a very old rock, may have originated from a strange meteor." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "dustyshard" + theme = "miner" + mob_name = "Power Miner" + use_message = "You pierce your skin with the shard..." + used_message = "This shard seems to have lost all its' power..." + failure_message = "The shard hasn't reacted at all. Maybe try again later..." + ling_failure = "The power of the shard seems to not react with your horrifying, mutated body." + +/obj/item/guardiancreator/miner/choose random = FALSE diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 44c2ab2e8e1..01f101c6455 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -10,7 +10,7 @@ magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin." tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space." - hive_fluff_string = "The mass seems to be able to attack with stealth causing massive damage." + miner_fluff_string = "You encounter... Glass, a sharp, fragile attacker." toggle_button_type = /obj/screen/guardian/ToggleMode/Assassin var/toggle = FALSE var/stealthcooldown = 160 diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 12463e0bc6c..93b0c555fbe 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -11,7 +11,7 @@ magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs..." - hive_fluff_string = "The mass seems to have primal senses, rapidly assaulting its' enemies." + miner_fluff_string = "You encounter... Titanium, a lightweight, agile fighter." var/charging = 0 var/obj/screen/alert/chargealert diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index 182f45703c0..d07fb00c619 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -7,7 +7,7 @@ magic_fluff_string = "..And draw the Drone, a dextrous master of construction and repair." tech_fluff_string = "Boot sequence complete. Dextrous combat modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! It can hold stuff in its fins, sort of." - hive_fluff_string = "The mass seems to be able to... hold stuff?" + miner_fluff_string = "You encounter... Gold, a malleable constructor." dextrous = TRUE held_items = list(null, null) var/obj/item/internal_storage //what we're storing within ourself diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index f1e38dabbb4..3a317b4143d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -14,7 +14,7 @@ magic_fluff_string = "..And draw the Scientist, master of explosive death." tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's an explosive carp! Boom goes the fishy." - hive_fluff_string = "The mass seems to generate explosive energy, destroying everything in its' path." + miner_fluff_string = "You encounter... Gibtonite, an explosive fighter." var/bomb_cooldown = 0 var/static/list/boom_signals = list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_BUMPED, COMSIG_ATOM_ATTACK_HAND) diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm index 641e9664e94..1b50d1ad95c 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm @@ -12,7 +12,7 @@ magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! OH GOD, EVERYTHING'S ON FIRE. Except you and the fish." - hive_fluff_string = "The mass seems to generate lots of energy, causing everything except its' owner to burn to ash." + miner_fluff_string = "You encounter... Plasma, the bringer of fire." /mob/living/simple_animal/hostile/guardian/fire/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm index 32ec8e5f55a..b8a8bbb5436 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm @@ -7,7 +7,7 @@ magic_fluff_string = "..And draw the Singularity, an anomalous force of terror." tech_fluff_string = "Boot sequence complete. Gravitokinetic modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a gravitokinetic carp! Now do you understand the gravity of the situation?" - hive_fluff_string = "The mass seems to be extremely heavy, and able to relay the heaviness to others." + miner_fluff_string = "You encounter... Bananium, a master of gravity business." var/list/gravito_targets = list() var/gravity_power_range = 10 //how close the stand must stay to the target to keep the heavy gravity diff --git a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm index 62eb1a54300..a70bf4edae2 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm @@ -16,7 +16,7 @@ magic_fluff_string = "..And draw the Tesla, a shocking, lethal source of power." tech_fluff_string = "Boot sequence complete. Lightning modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a lightning carp! Everyone else goes zap zap." - hive_fluff_string = "The mass seems to cause lots of thunder strikes around itself." + miner_fluff_string = "You encounter... Iron, a conductive master of lightning." var/datum/beam/summonerchain var/list/enemychains = list() var/successfulshocks = 0 diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm index b90e99de0e2..bb2682c464d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm @@ -8,7 +8,7 @@ magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge." tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy." - hive_fluff_string = "The mass seems to be extremely resistant to damage and have a special connection with the owner." + miner_fluff_string = "You encounter... Uranium, a very resistant guardian." toggle_button_type = /obj/screen/guardian/ToggleMode var/toggle = FALSE diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index 996b21e8eb4..17018e55266 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -22,7 +22,7 @@ magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean." - hive_fluff_string = "The mass seems to be able to create more mass and also hide at will." + miner_fluff_string = "You encounter... Diamond, a powerful projectile thrower." see_invisible = SEE_INVISIBLE_LIVING see_in_dark = 8 toggle_button_type = /obj/screen/guardian/ToggleMode @@ -112,6 +112,7 @@ /obj/effect/snare/Crossed(AM as mob|obj) + . = ..() if(isliving(AM) && spawner && spawner.summoner && AM != spawner && !spawner.hasmatchingsummoner(AM)) to_chat(spawner.summoner, "[AM] has crossed surveillance snare, [name].") var/list/guardians = spawner.summoner.hasparasites() diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm index 357c593695b..43b741b2fa4 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/standard.dm @@ -9,7 +9,7 @@ magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! It's really boring and standard. Better punch some walls to ease the tension." - hive_fluff_string = "The mass seems to have immense strength and increased agility." + miner_fluff_string = "You encounter... Adamantine, a powerful attacker." var/battlecry = "AT" /mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 4cc09b47598..368a993ed8b 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -11,7 +11,7 @@ magic_fluff_string = "..And draw the CMO, a potent force of life... and death." carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!" tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online." - hive_fluff_string = "The mass seems to have regenerative powers, while also possessing strength." + miner_fluff_string = "You encounter... Bluespace, the master of support." toggle_button_type = /obj/screen/guardian/ToggleMode var/obj/structure/receiving_pad/beacon var/beacon_cooldown = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 127ebada463..1030ba9fd09 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -115,7 +115,7 @@ return if(locate(/obj/structure/alien/weeds/node) in get_turf(src)) return - visible_message("[src] has planted some alien weeds!") + visible_message("[src] plants some alien weeds!") new /obj/structure/alien/weeds/node(loc) /mob/living/simple_animal/hostile/alien/proc/LayEggs() @@ -123,7 +123,7 @@ return if(locate(/obj/structure/alien/egg) in get_turf(src)) return - visible_message("[src] has laid an egg!") + visible_message("[src] lays an egg!") new /obj/structure/alien/egg(loc) /mob/living/simple_animal/hostile/alien/queen/large diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index c0d4cca57d3..938cdf137f6 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -23,8 +23,7 @@ maxHealth = 60 health = 60 speed = 0 - spacewalk = TRUE - + obj_damage = 60 melee_damage_lower = 20 melee_damage_upper = 30 @@ -38,14 +37,18 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - + faction = list("russian") - + footstep_type = FOOTSTEP_MOB_CLAW - + var/armored = FALSE var/rideable = FALSE - + +/mob/living/simple_animal/hostile/bear/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + /mob/living/simple_animal/hostile/bear/Life() . = ..() if(!rideable && mind) @@ -58,12 +61,12 @@ D.set_vehicle_dir_layer(EAST, ABOVE_MOB_LAYER) D.set_vehicle_dir_layer(WEST, ABOVE_MOB_LAYER) rideable = TRUE - + /mob/living/simple_animal/hostile/bear/update_icons() ..() if(armored) add_overlay("armor_bear") - + //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 5f810bb1ef1..fe18427f9aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -32,7 +32,6 @@ response_harm_simple = "squash" maxHealth = 10 health = 10 - spacewalk = TRUE faction = list("hostile") move_to_delay = 0 obj_damage = 0 @@ -62,6 +61,7 @@ /mob/living/simple_animal/hostile/poison/bees/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) generate_bee_visuals() AddComponent(/datum/component/swarming) diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/boss.dm b/code/modules/mob/living/simple_animal/hostile/bosses/boss.dm index bc07d470343..f76f5bace66 100644 --- a/code/modules/mob/living/simple_animal/hostile/bosses/boss.dm +++ b/code/modules/mob/living/simple_animal/hostile/bosses/boss.dm @@ -5,6 +5,7 @@ stat_attack = UNCONSCIOUS status_flags = 0 a_intent = INTENT_HARM + sentience_type = SENTIENCE_BOSS gender = NEUTER var/list/boss_abilities = list() //list of /datum/action/boss var/datum/boss_active_timed_battle/atb diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index ca65386c6ae..501654a5c36 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -21,7 +21,9 @@ speed = 0 maxHealth = 25 health = 25 - spacewalk = TRUE + food_type = list(/obj/item/reagent_containers/food/snacks/meat) + tame_chance = 10 + bonus_tame_chance = 5 search_objects = 1 wanted_objects = list(/obj/item/storage/cans) @@ -69,6 +71,7 @@ /mob/living/simple_animal/hostile/carp/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) carp_randomify(rarechance) update_icons() @@ -136,6 +139,19 @@ add_dead_carp_overlay() ..() +/mob/living/simple_animal/hostile/carp/tamed() + . = ..() + can_buckle = TRUE + buckle_lying = FALSE + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 13), TEXT_SOUTH = list(0, 15), TEXT_EAST = list(-2, 12), TEXT_WEST = list(2, 12))) + D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER) + D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) + D.set_vehicle_dir_layer(EAST, OBJ_LAYER) + D.set_vehicle_dir_layer(WEST, OBJ_LAYER) + D.drive_verb = "ride" + D.override_allow_spacemove = TRUE + /mob/living/simple_animal/hostile/carp/holocarp icon_state = "holocarp" icon_living = "holocarp" @@ -143,6 +159,9 @@ gold_core_spawnable = NO_SPAWN del_on_death = 1 random_color = FALSE + food_type = list() + tame_chance = 0 + bonus_tame_chance = 0 /mob/living/simple_animal/hostile/carp/megacarp icon = 'icons/mob/broadMobs.dmi' @@ -158,6 +177,9 @@ pixel_x = -16 mob_size = MOB_SIZE_LARGE random_color = FALSE + food_type = list() + tame_chance = 0 + bonus_tame_chance = 0 obj_damage = 80 melee_damage_lower = 20 @@ -207,5 +229,8 @@ faction = list(ROLE_SYNDICATE) AIStatus = AI_OFF rarechance = 10 + food_type = list() + tame_chance = 0 + bonus_tame_chance = 0 #undef REGENERATION_DELAY diff --git a/code/modules/mob/living/simple_animal/hostile/cockroach.dm b/code/modules/mob/living/simple_animal/hostile/cockroach.dm index f55fa50b2b5..d992f0383a3 100644 --- a/code/modules/mob/living/simple_animal/hostile/cockroach.dm +++ b/code/modules/mob/living/simple_animal/hostile/cockroach.dm @@ -62,6 +62,7 @@ ..() /mob/living/simple_animal/hostile/cockroach/Crossed(var/atom/movable/AM) + . = ..() if(ismob(AM)) if(isliving(AM)) var/mob/living/A = AM @@ -77,7 +78,7 @@ else if(isstructure(AM)) if(prob(squish_chance)) - AM.visible_message("[src] was crushed under [AM].") + AM.visible_message("[src] is crushed under [AM].") adjustBruteLoss(1) else visible_message("[src] avoids getting crushed.") diff --git a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm index 75b54e67c9d..57a33c2ee02 100644 --- a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm +++ b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm @@ -29,9 +29,12 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - spacewalk = TRUE gold_core_spawnable = HOSTILE_SPAWN faction = list("spooky") del_on_death = 1 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS + +/mob/living/simple_animal/hostile/eyeball/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index cfac04eccbb..317dd4f9198 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -15,7 +15,6 @@ speed = 0 maxHealth = 80 health = 80 - spacewalk = TRUE stat_attack = UNCONSCIOUS robust_searching = 1 @@ -36,6 +35,10 @@ footstep_type = FOOTSTEP_MOB_SHOE +/mob/living/simple_animal/hostile/faithless/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + /mob/living/simple_animal/hostile/faithless/AttackingTarget() . = ..() if(. && prob(12) && iscarbon(target)) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index d982109feb6..c22a22c979e 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -166,7 +166,7 @@ health = 120 melee_damage_lower = 10 melee_damage_upper = 20 - poison_per_bite = 5 + poison_per_bite = 10 move_to_delay = 5 gold_core_spawnable = NO_SPAWN @@ -209,10 +209,10 @@ . = ..() if(slowed_by_webs) if(!(locate(/obj/structure/spider/stickyweb) in loc)) - remove_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB) + remove_movespeed_modifier(/datum/movespeed_modifier/tarantula_web) slowed_by_webs = FALSE else if(locate(/obj/structure/spider/stickyweb) in loc) - add_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB, priority=100, multiplicative_slowdown=3) + add_movespeed_modifier(/datum/movespeed_modifier/tarantula_web) slowed_by_webs = TRUE /mob/living/simple_animal/hostile/poison/giant_spider/ice //spiders dont usually like tempatures of 140 kelvin who knew diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index cf70723b98d..0396a8ceb7e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -569,3 +569,10 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega . += M else if (M.loc.type in hostile_machines) . += M.loc + +/mob/living/simple_animal/hostile/tamed(whomst) + if(isliving(whomst)) + var/mob/living/fren = whomst + friends = fren + faction = fren.faction.Copy() + return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index dca43d39498..e775841049e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -597,78 +597,3 @@ obj/effect/temp_visual/fireball /mob/living/simple_animal/hostile/megafauna/dragon/lesser/grant_achievement(medaltype,scoretype) return - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon - name = "space dragon" - maxHealth = 250 - health = 250 - faction = list("neutral") - desc = "A space carp turned dragon by vile magic. Has the same ferocity of a space carp, but also a much more enabling body." - icon = 'icons/mob/spacedragon.dmi' - icon_state = "spacedragon" - icon_living = "spacedragon" - icon_dead = "spacedragon_dead" - health_doll_icon = "spacedragon" - obj_damage = 80 - melee_damage_upper = 35 - melee_damage_lower = 35 - speed = 0 - mouse_opacity = MOUSE_OPACITY_ICON - loot = list() - crusher_loot = list() - butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30) - move_force = MOVE_FORCE_NORMAL - move_resist = MOVE_FORCE_NORMAL - pull_force = MOVE_FORCE_NORMAL - deathmessage = "screeches as its wings turn to dust and it collapses on the floor, life estinguished." - attack_action_types = list() - small_sprite_type = /datum/action/small_sprite/megafauna/spacedragon - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/grant_achievement(medaltype,scoretype) - return - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/Initialize() - var/obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon/repulse_action = new /obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon(src) - repulse_action.action.Grant(src) - mob_spell_list += repulse_action - . = ..() - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/proc/fire_stream(var/atom/at = target) - playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE) - SLEEP_CHECK_DEATH(0) - var/range = 20 - var/list/turfs = list() - turfs = line_target(0, range, at) - INVOKE_ASYNC(src, .proc/fire_line, turfs) - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/OpenFire() - if(swooping) - return - ranged_cooldown = world.time + ranged_cooldown_time - fire_stream() - -/obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon - name = "Tail Sweep" - desc = "Throw back attackers with a sweep of your tail." - sound = 'sound/magic/tail_swing.ogg' - charge_max = 150 - clothes_req = FALSE - antimagic_allowed = TRUE - range = 1 - cooldown_min = 150 - invocation_type = "none" - sparkle_path = /obj/effect/temp_visual/dir_setting/tailsweep - action_icon = 'icons/mob/actions/actions_xeno.dmi' - action_icon_state = "tailsweep" - action_background_icon_state = "bg_alien" - anti_magic_check = FALSE - -/obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon/cast(list/targets,mob/user = usr) - if(iscarbon(user)) - var/mob/living/carbon/C = user - playsound(C.loc,'sound/effects/hit_punch.ogg', 80, TRUE, TRUE) - C.spin(6,1) - ..(targets, user, 60) - -/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/AltClickOn(atom/movable/A) - return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 0aeabe158c4..037dfb9ef08 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -3,7 +3,6 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 - spacewalk = TRUE a_intent = INTENT_HARM sentience_type = SENTIENCE_BOSS environment_smash = ENVIRONMENT_SMASH_RWALLS @@ -49,6 +48,7 @@ AddComponent(/datum/component/gps, gps_name) apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) ADD_TRAIT(src, TRAIT_NO_TELEPORT, MEGAFAUNA_TRAIT) + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) for(var/action_type in attack_action_types) var/datum/action/innate/megafauna_attack/attack_action = new action_type() attack_action.Grant(src) @@ -148,7 +148,7 @@ continue L.client.give_award(/datum/award/achievement/boss/boss_killer, L) L.client.give_award(achievement_type, L) - if(crusher_kill && istype(L.get_active_held_item(), /obj/item/twohanded/kinetic_crusher)) + if(crusher_kill && istype(L.get_active_held_item(), /obj/item/kinetic_crusher)) L.client.give_award(crusher_achievement_type, L) L.client.give_award(/datum/award/score/boss_score, L) //Score progression for bosses killed in general L.client.give_award(score_achievement_type, L) //Score progression for specific boss killed diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 6bcb7ae83c0..005437aae30 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -19,7 +19,6 @@ stat_attack = UNCONSCIOUS layer = LARGE_MOB_LAYER sentience_type = SENTIENCE_BOSS - hud_type = /datum/hud/lavaland_elite var/chosen_attack = 1 var/list/attack_action_types = list() var/can_talk = FALSE @@ -83,37 +82,6 @@ While using this makes the system rely on OnFire, it still gives options for tim M.chosen_attack = chosen_attack_num to_chat(M, chosen_message) -/mob/living/simple_animal/hostile/asteroid/elite/updatehealth() - . = ..() - update_health_hud() - -/mob/living/simple_animal/hostile/asteroid/elite/update_health_hud() - var/severity = 0 - var/healthpercent = (health/maxHealth) * 100 - if(hud_used?.healthdoll) - switch(healthpercent) - if(100 to INFINITY) - severity = 0 - if(80 to 100) - severity = 1 - if(60 to 80) - severity = 2 - if(40 to 60) - severity = 3 - if(20 to 40) - severity = 4 - if(10 to 20) - severity = 5 - if(1 to 20) - severity = 6 - else - severity = 7 - hud_used.healthdoll.icon_state = "elite_health[severity]" - if(severity > 0) - overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) - else - clear_fullscreen("brute") - //The Pulsing Tumor, the actual "spawn-point" of elites, handles the spawning, arena, and procs for dealing with basic scenarios. /obj/structure/elite_tumor diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm index 567881c7d0b..f922c2ba3f2 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm @@ -48,24 +48,24 @@ burrow = new spit.Grant(src) burrow.Grant(src) - + /datum/action/innate/goldgrub background_icon_state = "bg_default" - + /datum/action/innate/goldgrub/spitore name = "Spit Ore" desc = "Vomit out all of your consumed ores." - + /datum/action/innate/goldgrub/spitore/Activate() var/mob/living/simple_animal/hostile/asteroid/goldgrub/G = owner if(G.stat == DEAD || G.is_burrowed) return G.barf_contents() - + /datum/action/innate/goldgrub/burrow name = "Burrow" desc = "Burrow under soft ground, evading predators and increasing your speed." - + /obj/effect/dummy/phased_mob/goldgrub name = "water" icon = 'icons/effects/effects.dmi' @@ -75,7 +75,7 @@ invisibility = 60 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/canmove = TRUE - + /obj/effect/dummy/phased_mob/goldgrub/relaymove(mob/user, direction) forceMove(get_step(src,direction)) @@ -87,7 +87,7 @@ /obj/effect/dummy/phased_mob/goldgrub/singularity_act() return - + /datum/action/innate/goldgrub/burrow/Activate() var/mob/living/simple_animal/hostile/asteroid/goldgrub/G = owner var/obj/effect/dummy/phased_mob/goldgrub/holder = null @@ -113,7 +113,7 @@ holder = new /obj/effect/dummy/phased_mob/goldgrub(T) G.forceMove(holder) G.is_burrowed = TRUE - + /mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target) target = new_target if(target != null) @@ -132,7 +132,7 @@ EatOre(target) return return ..() - + /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(atom/movable/targeted_ore) if(targeted_ore && targeted_ore.loc != src) targeted_ore.forceMove(src) @@ -142,20 +142,20 @@ /mob/living/simple_animal/hostile/asteroid/goldgrub/death(gibbed) barf_contents() return ..() - + /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/barf_contents() visible_message("[src] spits out its consumed ores!") playsound(src, 'sound/effects/splat.ogg', 50, TRUE) for(var/atom/movable/AM in src) AM.forceMove(loc) - + /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time if(!stat) visible_message("The [name] buries into the ground, vanishing from sight!") qdel(src) /mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/projectile/P) - visible_message("The [P.name] was repelled by [name]'s girth!") + visible_message("The [P.name] is repelled by [name]'s girth!") return BULLET_ACT_BLOCK /mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(amount, updating_health = TRUE, forced = FALSE) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index c835d5cc011..2f72b413d07 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -107,13 +107,6 @@ bonus_tame_chance = 5 var/saddled = FALSE -/mob/living/simple_animal/hostile/asteroid/goliath/beast/tamed(whomst) - if(isliving(whomst)) - var/mob/living/fren = whomst - friends = fren - faction = fren.faction.Copy() - ..() - /mob/living/simple_animal/hostile/asteroid/goliath/beast/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/saddle) && !saddled) if(tame && do_after(user,55,target=src)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index e9bea26e228..59dda323800 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -197,7 +197,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) visible_message("[name] burrows into the flesh of [H]!") var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L - if(H.dna.check_mutation(DWARFISM)) //dwarf legions aren't just fluff! + if(HAS_TRAIT(H, TRAIT_DWARF)) //dwarf legions aren't just fluff! L = new /mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf(H.loc) else L = new(H.loc) @@ -314,7 +314,7 @@ suit = /obj/item/clothing/suit/armor/bone gloves = /obj/item/clothing/gloves/bracer if(prob(5)) - back = pickweight(list(/obj/item/twohanded/spear/bonespear = 3, /obj/item/twohanded/fireaxe/boneaxe = 2)) + back = pickweight(list(/obj/item/spear/bonespear = 3, /obj/item/fireaxe/boneaxe = 2)) if(prob(10)) belt = /obj/item/storage/belt/mining/primitive if(prob(30)) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 387351d30e8..a673fd58811 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -154,7 +154,7 @@ /mob/living/simple_animal/hostile/mushroom/proc/Bruise() if(!bruised && !stat) - src.visible_message("The [src.name] was bruised!") + src.visible_message("The [src.name] is bruised!") bruised = 1 /mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm index 0827466bed1..7d104a94597 100644 --- a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm +++ b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm @@ -7,7 +7,7 @@ icon_dead = null icon_gib = "syndicate_gib" mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - speak_chance = 12 + speak_chance = 0 turns_per_move = 5 speed = 0 stat_attack = UNCONSCIOUS @@ -24,15 +24,18 @@ loot = list(/obj/effect/mob_spawn/human/corpse/nanotrasensoldier) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list("nanotrasenprivate") + faction = list(ROLE_DEATHSQUAD) + check_friendly_fire = TRUE status_flags = CANPUSH - speak = list("Stop resisting!", "I AM THE LAW!", "Face the wrath of the golden bolt!", "Stop breaking the law, asshole!") - search_objects = 1 - + del_on_death = TRUE + dodging = TRUE footstep_type = FOOTSTEP_MOB_SHOE +/mob/living/simple_animal/hostile/nanotrasen/screaming + icon_state = "nanotrasen" + icon_living = "nanotrasen" -/mob/living/simple_animal/hostile/nanotrasen/Aggro() +/mob/living/simple_animal/hostile/nanotrasen/screaming/Aggro() ..() summon_backup(15) say("411 in progress, requesting backup!") @@ -46,8 +49,6 @@ minimum_distance = 5 casingtype = /obj/item/ammo_casing/c45 projectilesound = 'sound/weapons/gun/pistol/shot_alt.ogg' - loot = list(/obj/item/gun/ballistic/automatic/pistol/m1911, - /obj/effect/mob_spawn/human/corpse/nanotrasensoldier) /mob/living/simple_animal/hostile/nanotrasen/ranged/smg @@ -56,5 +57,3 @@ rapid = 3 casingtype = /obj/item/ammo_casing/c46x30mm projectilesound = 'sound/weapons/gun/smg/shot.ogg' - loot = list(/obj/item/gun/ballistic/automatic/wt550, - /obj/effect/mob_spawn/human/corpse/nanotrasensoldier) diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index fbcdc85283a..886a23f62d6 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -52,7 +52,10 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE + +/mob/living/simple_animal/hostile/pirate/melee/space/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) /mob/living/simple_animal/hostile/pirate/melee/Initialize() . = ..() @@ -89,4 +92,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE + +/mob/living/simple_animal/hostile/pirate/ranged/space/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index 163d5a818f0..a8404e7e970 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -14,7 +14,6 @@ speak_chance = 0 maxHealth = 15 health = 15 - spacewalk = TRUE see_in_dark = 10 harm_intent_damage = 6 melee_damage_lower = 6 @@ -39,3 +38,7 @@ //Space bats need no air to fly in. atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 + +/mob/living/simple_animal/hostile/retaliate/bat/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm index 8f9a9ad597e..a2bea19e534 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm @@ -42,6 +42,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/nugget = 5) /mob/living/simple_animal/hostile/retaliate/frog/Crossed(AM as mob|obj) + . = ..() if(!stat && isliving(AM)) var/mob/living/L = AM if(L.mob_size > MOB_SIZE_TINY) diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index d2acc195fa9..e52cda0945b 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -49,7 +49,7 @@ melee_damage_upper = 20 deathmessage = "collapses into a pile of bones, its gear falling to the floor!" loot = list(/obj/effect/decal/remains/human, - /obj/item/twohanded/spear, + /obj/item/spear, /obj/item/clothing/shoes/winterboots, /obj/item/clothing/suit/hooded/wintercoat) diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm new file mode 100644 index 00000000000..a7e1e64e69a --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm @@ -0,0 +1,533 @@ +/** + * # Space Dragon + * + * A space-faring leviathan-esque monster which breathes fire and summons carp. Spawned during its respective midround antagonist event. + * + * A space-faring monstrosity who has the ability to breathe dangerous fire breath and uses its powerful wings to knock foes away. + * Normally spawned as an antagonist during the Space Dragon event, Space Dragon's main goal is to open three rifts from which to pull a great tide of carp onto the station. + * Space Dragon can summon only one rift at a time, and can do so anywhere a blob is allowed to spawn. In order to trigger his victory condition, Space Dragon must summon and defend three rifts while they charge. + * Space Dragon, when spawned, has five minutes to summon the first rift. Failing to do so will cause Space Dragon to return from whence he came. + * When the rift spawns, ghosts can interact with it to spawn in as space carp to help complete the mission. One carp is granted when the rift is first summoned, with an extra one every 40 seconds. + * Once the victory condition is met, the shuttle is called and all current rifts are allowed to spawn infinite sentient space carp. + * If a charging rift is destroyed, Space Dragon will be incredibly slowed, and the endlag on his gust attack is greatly increased on each use. + * Space Dragon has the following abilities to assist him with his objective: + * - Can shoot fire in straight line, dealing 30 burn damage and setting those suseptible on fire. + * - Can use his wings to temporarily stun and knock back any nearby mobs. This attack has no cooldown, but instead has endlag after the attack where Space Dragon cannot act. This endlag's time decreases over time, but is added to every time he uses the move. + * - Can swallow mob corpses to heal for half their max health. Any corpses swallowed are stored within him, and will be regurgitated on death. + * - Can tear through any type of wall. This takes 4 seconds for most walls, and 12 seconds for reinforced walls. + */ +/mob/living/simple_animal/hostile/space_dragon + name = "Space Dragon" + desc = "A vile leviathan-esque creature that flies in the most unnatural way. Slightly looks similar to a space carp." + maxHealth = 400 + health = 400 + a_intent = INTENT_HARM + speed = 0 + attack_verb_continuous = "chomps" + attack_verb_simple = "chomp" + attack_sound = 'sound/magic/demon_attack1.ogg' + deathsound = 'sound/magic/demon_dies.ogg' + icon = 'icons/mob/spacedragon.dmi' + icon_state = "spacedragon" + icon_living = "spacedragon" + icon_dead = "spacedragon_dead" + health_doll_icon = "spacedragon" + obj_damage = 50 + environment_smash = ENVIRONMENT_SMASH_NONE + flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1 + melee_damage_upper = 35 + melee_damage_lower = 35 + armour_penetration = 30 + pixel_x = -16 + turns_per_move = 5 + ranged = TRUE + mouse_opacity = MOUSE_OPACITY_ICON + butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30) + deathmessage = "screeches as its wings turn to dust and it collapses on the floor, life estinguished." + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 1500 + faction = list("carp") + pressure_resistance = 200 + /// Current time since the the last rift was activated. If set to -1, does not increment. + var/riftTimer = 0 + /// Maximum amount of time which can pass without a rift before Space Dragon despawns. + var/maxRiftTimer = 300 + /// How much endlag using Wing Gust should apply. Each use of wing gust increments this, and it decreases over time. + var/tiredness = 0 + /// A multiplier to how much each use of wing gust should add to the tiredness variable. Set to 5 if the current rift is destroyed. + var/tiredness_mult = 1 + /// Determines whether or not Space Dragon is in the middle of using wing guat. If set to true, prevents him from moving and doing certain actions. + var/using_special = FALSE + /// A list of all of the rifts created by Space Dragon. Used for setting them all to infinite carp spawn when Space Dragon wins, and removing them when Space Dragon dies. + var/list/obj/structure/carp_rift/rift_list = list() + /// How many rifts have been successfully charged + var/rifts_charged = 0 + /// Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence. + var/objective_complete = FALSE + /// The togglable small sprite action + var/small_sprite_type = /datum/action/small_sprite/megafauna/spacedragon + /// The innate ability to use wing gust + var/datum/action/innate/space_dragon/gustAttack/gust + /// The innate ability to summon rifts + var/datum/action/innate/space_dragon/summonRift/rift + +/mob/living/simple_animal/hostile/space_dragon/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + if(small_sprite_type) + var/datum/action/small_sprite/small_action = new small_sprite_type() + small_action.Grant(src) + gust = new + gust.Grant(src) + rift = new + rift.Grant(src) + +/mob/living/simple_animal/hostile/space_dragon/Life(mapload) + . = ..() + tiredness = max(tiredness - 1, 0) + if(rifts_charged == 3 && !objective_complete) + victory() + if(riftTimer == -1) + return + riftTimer = min(riftTimer + 1, maxRiftTimer + 1) + if(riftTimer == (maxRiftTimer - 60)) + to_chat(src, "You have a minute left to summon the rift! Get to it!") + return + if(riftTimer == maxRiftTimer) + to_chat(src, "You've failed to summon the rift in a timely manner! You're being pulled back from whence you came!") + destroy_rifts() + QDEL_NULL(src) + +/mob/living/simple_animal/hostile/space_dragon/AttackingTarget() + if(using_special) + return + if(target == src) + to_chat(src, "You almost bite yourself, but then decide against it.") + return + if(istype(target, /turf/closed/wall)) + var/turf/closed/wall/thewall = target + to_chat(src, "You begin tearing through the wall...") + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) + var/timetotear = 40 + if(istype(target, /turf/closed/wall/r_wall)) + timetotear = 120 + if(do_after(src, timetotear, target = thewall)) + if(istype(thewall, /turf/open)) + return + thewall.dismantle_wall(1) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE) + return + if(isliving(target)) //Swallows corpses like a snake to regain health. + var/mob/living/L = target + if(L.stat == DEAD) + to_chat(src, "You begin to swallow [L] whole...") + if(do_after(src, 30, target = L)) + if(eat(L)) + adjustHealth(-L.maxHealth * 0.5) + return + . = ..() + if(istype(target, /obj/mecha)) + var/obj/mecha/M = target + M.take_damage(50, BRUTE, "melee", 1) + +/mob/living/simple_animal/hostile/space_dragon/Move() + if(!using_special) + ..() + +/mob/living/simple_animal/hostile/space_dragon/OpenFire() + if(using_special) + return + ranged_cooldown = world.time + ranged_cooldown_time + fire_stream() + +/mob/living/simple_animal/hostile/space_dragon/death(gibbed) + empty_contents() + if(!objective_complete) + destroy_rifts() + ..() + +/mob/living/simple_animal/hostile/space_dragon/wabbajack_act(mob/living/new_mob) + empty_contents() + . = ..() + +/** + * Determines a line of turfs from sources's position to the target with length range. + * + * Determines a line of turfs from the source's position to the target with length range. + * The line will extend on past the target if the range is large enough, and not reach the target if range is small enough. + * Arguments: + * * offset - whether or not to aim slightly to the left or right of the target + * * range - how many turfs should we go out for + * * atom/at - The target + */ +/mob/living/simple_animal/hostile/space_dragon/proc/line_target(offset, range, atom/at = target) + if(!at) + return + var/angle = ATAN2(at.x - src.x, at.y - src.y) + offset + var/turf/T = get_turf(src) + for(var/i in 1 to range) + var/turf/check = locate(src.x + cos(angle) * i, src.y + sin(angle) * i, src.z) + if(!check) + break + T = check + return (getline(src, T) - get_turf(src)) + +/** + * Spawns fire at each position in a line from the source to the target. + * + * Spawns fire at each position in a line from the source to the target. + * Stops if it comes into contact with a solid wall, a window, or a door. + * Delays the spawning of each fire by 1.5 deciseconds. + * Arguments: + * * atom/at - The target + */ +/mob/living/simple_animal/hostile/space_dragon/proc/fire_stream(var/atom/at = target) + playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE) + var/range = 20 + var/list/turfs = list() + turfs = line_target(0, range, at) + var/delayFire = -1.5 + for(var/turf/T in turfs) + if(istype(T, /turf/closed)) + return + for(var/obj/structure/window/W in T.contents) + return + for(var/obj/machinery/door/D in T.contents) + if(D.density) + return + delayFire += 1.5 + addtimer(CALLBACK(src, .proc/dragon_fire_line, T), delayFire) + +/** + * What occurs on each tile to actually create the fire. + * + * Creates a fire on the given turf. + * It creates a hotspot on the given turf, damages any living mob with 30 burn damage, and damages mechs by 50. + * It can only hit any given target once. + * Arguments: + * * turf/T - The turf to trigger the effects on. + */ +mob/living/simple_animal/hostile/space_dragon/proc/dragon_fire_line(turf/T) + var/list/hit_list = list() + hit_list += src + new /obj/effect/hotspot(T) + T.hotspot_expose(700,50,1) + for(var/mob/living/L in T.contents) + if(L in hit_list) + continue + hit_list += L + L.adjustFireLoss(30) + to_chat(L, "You're hit by [src]'s fire breath!") + // deals damage to mechs + for(var/obj/mecha/M in T.contents) + if(M in hit_list) + continue + hit_list += M + M.take_damage(50, BRUTE, "melee", 1) + +/** + * Handles consuming and storing consumed things inside Space Dragon + * + * Plays a sound and then stores the consumed thing inside Space Dragon. + * Used in AttackingTarget(), paired with a heal should it succeed. + * Arguments: + * * atom/movable/A - The thing being consumed + */ +/mob/living/simple_animal/hostile/space_dragon/proc/eat(atom/movable/A) + if(A && A.loc != src) + playsound(src, 'sound/magic/demon_attack1.ogg', 100, TRUE) + visible_message("[src] swallows [A] whole!") + A.forceMove(src) + return TRUE + return FALSE + +/** + * Disperses the contents of the mob on the surrounding tiles. + * + * Randomly places the contents of the mob onto surrounding tiles. + * Has a 10% chance to place on the same tile as the mob. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/empty_contents() + for(var/atom/movable/AM in src) + AM.forceMove(loc) + if(prob(90)) + step(AM, pick(GLOB.alldirs)) + +/** + * Resets Space Dragon's status after using wing gust. + * + * Resets Space Dragon's status after using wing gust. + * If it isn't dead by the time it calls this method, reset the sprite back to the normal living sprite. + * Also sets the using_special variable to FALSE, allowing Space Dragon to move and attack freely again. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/reset_status() + if(stat != DEAD) + icon_state = "spacedragon" + using_special = FALSE + +/** + * Handles Space Dragon's temporary empowerment after boosting a rift. + * + * Empowers and depowers Space Dragon after a successful rift charge. + * Empowered, Space Dragon regains all his health and becomes temporarily faster for 30 seconds, along with being tinted red. + * Depowered simply resets him back to his default state. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/rift_empower(is_empowered) + if(is_empowered) + fully_heal() + color = "#FF0000" + set_varspeed(-0.5) + addtimer(CALLBACK(src, .proc/rift_empower, FALSE), 300) + else + color = "#FFFFFF" + set_varspeed(0) + +/** + * Destroys all of Space Dragon's current rifts. + * + * QDeletes all the current rifts after removing their references to other objects. + * Currently, the only reference they have is to the Dragon which created them, so we clear that before deleting them. + * Currently used when Space Dragon dies. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/destroy_rifts() + for(var/obj/structure/carp_rift/rift in rift_list) + rift.dragon = null + rift_list -= rift + if(!QDELETED(rift)) + QDEL_NULL(rift) + rifts_charged = 0 + +/** + * Handles wing gust from the windup all the way to the endlag at the end. + * + * Handles the wing gust attack from start to finish, based on the timer. + * When intially triggered, starts at 0. Until the timer reaches 10, increase Space Dragon's y position by 2 and call back to the function in 1.5 deciseconds. + * When the timer is at 10, trigger the attack. Change Space Dragon's sprite. reset his y position, and push all living creatures back in a 3 tile radius and stun them for 5 seconds. + * Stay in the ending state for how much our tiredness dictates and add to our tiredness. + * Arguments: + * * timer - The timer used for the windup. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/useGust(timer) + if(timer != 10) + pixel_y = pixel_y + 2; + addtimer(CALLBACK(src, .proc/useGust, timer + 1), 1.5) + return + pixel_y = 0 + icon_state = "spacedragon_gust_2" + playsound(src, 'sound/effects/gravhit.ogg', 100, TRUE) + var/gust_locs = spiral_range_turfs(3, get_turf(src)) + var/list/hit_things = list() + for(var/turf/T in gust_locs) + for(var/mob/living/L in T.contents) + if(L == src) + continue + hit_things += L + visible_message("[L] is knocked back by the gust!") + to_chat(L, "You're knocked back by the gust!") + var/dir_to_target = get_dir(get_turf(src), get_turf(L)) + var/throwtarget = get_edge_target_turf(target, dir_to_target) + L.safe_throw_at(throwtarget, 10, 1, src) + L.Paralyze(50) + addtimer(CALLBACK(src, .proc/reset_status), 4 + ((tiredness * tiredness_mult) / 10)) + tiredness = tiredness + (30 * tiredness_mult) + +/** + * Sets up Space Dragon's victory for completing the objectives. + * + * Triggers when Space Dragon completes his objective. + * Calls the shuttle with a coefficient of 3, making it impossible to recall. + * Sets all of his rifts to allow for infinite sentient carp spawns + * Also plays appropiate sounds and CENTCOM messages. + */ +/mob/living/simple_animal/hostile/space_dragon/proc/victory() + objective_complete = TRUE + var/datum/antagonist/space_dragon/S = mind.has_antag_datum(/datum/antagonist/space_dragon) + if(S) + var/datum/objective/summon_carp/main_objective = locate() in S.objectives + if(main_objective) + main_objective.completed = TRUE + sound_to_playing_players('sound/machines/alarm.ogg') + sleep(100) + priority_announce("A large amount of lifeforms have been detected approaching [station_name()] at extreme speeds. Evacuation of the remamining crew will begin immediately.", "Central Command Spacial Corps") + sleep(50) + SSshuttle.emergency.request(null, set_coefficient = 0.3) + +/datum/action/innate/space_dragon + background_icon_state = "bg_default" + icon_icon = 'icons/mob/actions/actions_space_dragon.dmi' + +/datum/action/innate/space_dragon/gustAttack + name = "Gust Attack" + button_icon_state = "gust_attack" + desc = "Use your wings to knock back foes with gusts of air, pushing them away and stunning them. Using this too often will leave you vulnerable for longer periods of time." + +/datum/action/innate/space_dragon/gustAttack/Activate() + var/mob/living/simple_animal/hostile/space_dragon/S = owner + if(S.using_special) + return + S.using_special = TRUE + S.icon_state = "spacedragon_gust" + S.useGust(0) + +/datum/action/innate/space_dragon/summonRift + name = "Summon Rift" + button_icon_state = "carp_rift" + desc = "Summon a rift to bring forth a horde of space carp." + +/datum/action/innate/space_dragon/summonRift/Activate() + var/mob/living/simple_animal/hostile/space_dragon/S = owner + if(S.using_special) + return + var/area/A = get_area(S) + if(!A.valid_territory) + to_chat(S, "You can't summon a rift here! Try summoning somewhere secure within the station!") + return + for(var/obj/structure/carp_rift/rift in S.rift_list) + var/area/RA = get_area(rift) + if(RA == A) + to_chat(S, "You've already summoned a rift in this area! You have to summon again somewhere else!") + return + to_chat(S, "You begin to open a rift...") + if(do_after(S, 100, target = S)) + for(var/obj/structure/carp_rift/c in S.loc.contents) + return + var/obj/structure/carp_rift/CR = new /obj/structure/carp_rift(S.loc) + playsound(S, 'sound/vehicles/rocketlaunch.ogg', 100, TRUE) + S.riftTimer = -1 + CR.dragon = S + S.rift_list += CR + to_chat(S, "The rift has been summoned. Prevent the crew from destroying it at all costs!") + notify_ghosts("The Space Dragon has opened a rift!", source = CR, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Carp Rift Opened") + qdel(src) + +/** + * # Carp Rift + * + * The portals Space Dragon summons to bring carp onto the station. + * + * The portals Space Dragon summons to bring carp onto the station. His main objective is to summon 3 of them and protect them from being destroyed. + * The portals can summon sentient space carp in limited amounts. The portal also changes color based on whether or not a carp spawn is available. + * Once it is fully charged, it becomes indestructible, and intermitently spawns non-sentient carp. It is still destroyed if Space Dragon dies. + */ +/obj/structure/carp_rift + name = "carp rift" + desc = "A rift akin to the ones space carp use to travel long distances." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) + max_integrity = 300 + icon = 'icons/obj/carp_rift.dmi' + icon_state = "carp_rift" + light_color = LIGHT_COLOR_BLUE + light_range = 10 + anchored = TRUE + density = FALSE + /// The amount of time the rift has charged for. + var/time_charged = 0 + /// The maximum charge the rift can have. It actually goes to max_charge + 1, as to prevent constantly retriggering the effects on full charge. + var/max_charge = 240 + /// How many carp spawns it has available. + var/carp_stored = 0 + /// A reference to the Space Dragon that created it. + var/mob/living/simple_animal/hostile/space_dragon/dragon + +/obj/structure/carp_rift/Initialize(mapload) + . = ..() + carp_stored = 1 + time_charged = 1 + START_PROCESSING(SSobj, src) + +/obj/structure/carp_rift/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + playsound(src, 'sound/magic/lightningshock.ogg', 50, TRUE) + +/obj/structure/carp_rift/Destroy() + STOP_PROCESSING(SSobj, src) + if(time_charged != max_charge + 1) + to_chat(dragon, "The rift has been destroyed! You have failed, and find yourself brought down by the weight of your failure.") + dragon.set_varspeed(5) + dragon.tiredness_mult = 5 + dragon.destroy_rifts() + playsound(src, 'sound/vehicles/rocketlaunch.ogg', 100, TRUE) + return ..() + +/obj/structure/carp_rift/process() + time_charged = min(time_charged + 1, max_charge + 1) + update_check() + for(var/mob/living/simple_animal/hostile/hostilehere in loc) + if("carp" in hostilehere.faction) + hostilehere.adjustHealth(-10) + var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(hostilehere)) + H.color = "#0000FF" + if(time_charged < max_charge) + desc = "A rift akin to the ones space carp use to travel long distances. It seems to be [(time_charged / max_charge) * 100]% charged." + if(carp_stored == 0) + icon_state = "carp_rift" + light_color = LIGHT_COLOR_BLUE + else + icon_state = "carp_rift_carpspawn" + light_color = LIGHT_COLOR_PURPLE + else + var/spawncarp = rand(1,40) + if(spawncarp == 1) + new /mob/living/simple_animal/hostile/carp(loc) + +/obj/structure/carp_rift/attack_ghost(mob/user) + . = ..() + summon_carp(user) + +/** + * Does a series of checks based on the portal's status. + * + * Performs a number of checks based on the current charge of the portal, and triggers various effects accordingly. + * If the current charge is a multiple of 40, add an extra carp spawn. + * If we're halfway charged, announce to the crew our location in a CENTCOM announcement. + * If we're fully charged, tell the crew we are, change our color to yellow, become invulnerable, and give Space Dragon the ability to make another rift, if he hasn't summoned 3 total. + */ +/obj/structure/carp_rift/proc/update_check() + if(time_charged % 40 == 0 && time_charged != max_charge) + carp_stored++ + notify_ghosts("The carp rift can summon an additional carp!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Carp Spawn Available") + if(time_charged == (max_charge - 120)) + var/area/A = get_area(src) + priority_announce("A rift is causing an unnaturally large energy flux in [A.map_name]. Stop it at all costs!", "Central Command Spacial Corps", 'sound/ai/spanomalies.ogg') + if(time_charged == max_charge) + var/area/A = get_area(src) + priority_announce("Spatial object has reached peak energy charge in [A.map_name], please stand-by.", "Central Command Spacial Corps") + obj_integrity = INFINITY + desc = "A rift akin to the ones space carp use to travel long distances. This one is fully charged, and is capable of bringing many carp to the station's location." + icon_state = "carp_rift_charged" + light_color = LIGHT_COLOR_YELLOW + armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) + resistance_flags = INDESTRUCTIBLE + dragon.rifts_charged += 1 + if(dragon.rifts_charged != 3) + dragon.rift = new + dragon.rift.Grant(dragon) + dragon.riftTimer = 0 + dragon.rift_empower(TRUE) + +/** + * Used to create carp controlled by ghosts when the option is available. + * + * Creates a carp for the ghost to control if we have a carp spawn available. + * Gives them prompt to control a carp, and if our circumstances still allow if when they hit yes, spawn them in as a carp. + * Also add them to the list of carps in Space Dragon's antgonist datum, so they'll be displayed as having assisted him on round end. + * Arguments: + * * mob/user - The ghost which will take control of the carp. + */ +/obj/structure/carp_rift/proc/summon_carp(mob/user) + if(carp_stored == 0)//Not enough carp points + return FALSE + var/carp_ask = alert("Become a carp?", "Help bring forth the horde?", "Yes", "No") + if(carp_ask == "No" || !src || QDELETED(src) || QDELETED(user)) + return FALSE + if(carp_stored == 0) + to_chat(user, "The rift already summoned enough carp!") + return FALSE + var/mob/living/simple_animal/hostile/carp/newcarp = new /mob/living/simple_animal/hostile/carp(loc) + newcarp.key = user.key + var/datum/antagonist/space_dragon/S = dragon.mind.has_antag_datum(/datum/antagonist/space_dragon) + if(S) + S.carp += newcarp.mind + to_chat(newcarp, "You have arrived in order to assist the space dragon with securing the rift. Do not jeopardize the mission, and protect the rift at all costs!") + carp_stored -= 1 + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index cb247e60d4a..7ec2c1e24b2 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -59,10 +59,10 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) set_light(4) /mob/living/simple_animal/hostile/syndicate/space/stormtrooper @@ -93,11 +93,11 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE projectile_deflect_chance = 50 /mob/living/simple_animal/hostile/syndicate/melee/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) set_light(4) /mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper @@ -145,11 +145,11 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE projectile_deflect_chance = 50 /mob/living/simple_animal/hostile/syndicate/melee/sword/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) sord = new(src) set_light(4) @@ -192,10 +192,10 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/ranged/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) set_light(4) /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper @@ -225,10 +225,10 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/ranged/smg/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) set_light(4) /mob/living/simple_animal/hostile/syndicate/ranged/smg/space/stormtrooper @@ -255,10 +255,10 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 - spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/ranged/shotgun/space/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) set_light(4) /mob/living/simple_animal/hostile/syndicate/ranged/shotgun/space/stormtrooper diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index 393690cfcf7..ba60b2d1583 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -1,5 +1,13 @@ - - +/** + * Kudzu Flower Bud + * + * A flower created by flowering kudzu which spawns a venus human trap after a certain amount of time has passed. + * + * A flower created by kudzu with the flowering mutation. Spawns a venus human trap after 2 minutes under normal circumstances. + * Also spawns 4 vines going out in diagonal directions from the bud. Any living creature not aligned with plants is damaged by these vines. + * Once it grows a venus human trap, the bud itself will destroy itself. + * + */ /obj/structure/alien/resin/flower_bud_enemy //inheriting basic attack/damage stuff from alien structures name = "flower bud" desc = "A large pulsating plant..." @@ -9,9 +17,9 @@ opacity = 0 canSmoothWith = list() smooth = SMOOTH_FALSE + /// The amount of time it takes to create a venus human trap, in deciseconds var/growth_time = 1200 - /obj/structure/alien/resin/flower_bud_enemy/Initialize() . = ..() var/list/anchors = list() @@ -25,35 +33,50 @@ B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow) addtimer(CALLBACK(src, .proc/bear_fruit), growth_time) +/** + * Spawns a venus human trap, then qdels itself. + * + * Displays a message, spawns a human venus trap, then qdels itself. + */ /obj/structure/alien/resin/flower_bud_enemy/proc/bear_fruit() - visible_message("the plant has borne fruit!") + visible_message("The plant has borne fruit!") new /mob/living/simple_animal/hostile/venus_human_trap(get_turf(src)) qdel(src) - /obj/effect/ebeam/vine name = "thick vine" mouse_opacity = MOUSE_OPACITY_ICON desc = "A thick vine, painful to the touch." - /obj/effect/ebeam/vine/Crossed(atom/movable/AM) + . = ..() if(isliving(AM)) var/mob/living/L = AM - if(!("vines" in L.faction)) + if(!isvineimmune(L)) L.adjustBruteLoss(5) to_chat(L, "You cut yourself on the thorny vines.") - - +/** + * Venus Human Trap + * + * The result of a kudzu flower bud, these enemies use vines to drag prey close to them for attack. + * + * A carnivorious plant which uses vines to catch and ensnare prey. Spawns from kudzu flower buds. + * Each one has a maximum of four vines, which can be attached to a variety of things. Carbons are stunned when a vine is attached to them, and movable entities are pulled closer over time. + * Attempting to attach a vine to something with a vine already attached to it will pull all movable targets closer on command. + * Once the prey is in melee range, melee attacks from the venus human trap heals itself for 10% of its max health, assuming the target is alive. + * Akin to certain spiders, venus human traps can also be possessed and controlled by ghosts. + * + */ /mob/living/simple_animal/hostile/venus_human_trap name = "venus human trap" desc = "Now you know how the fly feels." icon_state = "venus_human_trap" + health_doll_icon = "venus_human_trap" layer = SPACEVINE_MOB_LAYER health = 50 maxHealth = 50 - ranged = 1 + ranged = TRUE harm_intent_damage = 5 obj_damage = 60 melee_damage_lower = 25 @@ -62,75 +85,106 @@ attack_sound = 'sound/weapons/bladeslice.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 0 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE faction = list("hostile","vines","plants") - var/list/grasping = list() - var/list/tethers = list() - var/max_grasps = 4 - var/grasp_chance = 20 - var/grasp_pull_chance = 85 - var/grasp_range = 4 - del_on_death = 1 - -/mob/living/simple_animal/hostile/venus_human_trap/Destroy() - for(var/L in grasping) - var/datum/beam/B = grasping[L] - if(B) - qdel(B) - for(var/datum/component/tether in tethers) - tether.RemoveComponent() - grasping = null - return ..() - -/mob/living/simple_animal/hostile/venus_human_trap/handle_automated_action() - if(..()) - for(var/mob/living/L in grasping) - if(L.stat == DEAD) - var/datum/beam/B = grasping[L] - if(B) - B.End() - grasping -= L - - //Can attack+pull multiple times per cycle - if(L.Adjacent(src)) - L.attack_animal(src) - else - if(prob(grasp_pull_chance)) - setDir(get_dir(src,L) )//staaaare - step(L,get_dir(L,src)) //reel them in - L.Paralyze(60) //you can't get away now~ - - if(length(grasping) < max_grasps) - grasping: - for(var/mob/living/L in view(grasp_range, src)) - if(L == src || faction_check_mob(L) || (L in grasping) || L == target) - continue - for(var/turf/T in getline(src,L)) - if (T.density) - continue grasping - for(var/obj/O in T) - if(O.density) - continue grasping - if(prob(grasp_chance)) - to_chat(L, "\The [src] has you entangled!") - grasping[L] = Beam(L, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/vine) - tethers += list(L.AddComponent(/datum/component/tether, src, grasp_range+1, /obj/effect/ebeam/vine), AddComponent(/datum/component/tether, L, grasp_range+1, /obj/effect/ebeam/vine)) - break //only take 1 new victim per cycle - + initial_language_holder = /datum/language_holder/venus + del_on_death = TRUE + /// A list of all the plant's vines + var/list/vines = list() + /// The maximum amount of vines a plant can have at one time + var/max_vines = 4 + /// How far away a plant can attach a vine to something + var/vine_grab_distance = 5 + /// Whether or not this plant is ghost possessable + var/playable_plant = TRUE + +/mob/living/simple_animal/hostile/venus_human_trap/Life() + . = ..() + pull_vines() + +/mob/living/simple_animal/hostile/venus_human_trap/AttackingTarget() + . = ..() + if(isliving(target)) + var/mob/living/L = target + if(L.stat != DEAD) + adjustHealth(-maxHealth * 0.1) /mob/living/simple_animal/hostile/venus_human_trap/OpenFire(atom/the_target) + for(var/datum/beam/B in vines) + if(B.target == the_target) + pull_vines() + ranged_cooldown = world.time + (ranged_cooldown_time * 0.5) + return + if(get_dist(src,the_target) > vine_grab_distance || vines.len == max_vines) + return for(var/turf/T in getline(src,target)) if (T.density) return for(var/obj/O in T) if(O.density) return - var/dist = get_dist(src,the_target) - Beam(the_target, "vine", time=dist*2, maxdistance=dist+2, beam_type=/obj/effect/ebeam/vine) - the_target.attack_animal(src) - + + var/datum/beam/newVine = Beam(the_target, "vine", time=INFINITY, maxdistance = vine_grab_distance, beam_type=/obj/effect/ebeam/vine) + RegisterSignal(newVine, COMSIG_PARENT_QDELETING, .proc/remove_vine, newVine) + vines += newVine + if(isliving(the_target)) + var/mob/living/L = the_target + L.Paralyze(20) + ranged_cooldown = world.time + ranged_cooldown_time + +/mob/living/simple_animal/hostile/venus_human_trap/Login() + . = ..() + to_chat(src, "You a venus human trap! Protect the kudzu at all costs, and feast on those who oppose you!") -/mob/living/simple_animal/hostile/venus_human_trap/CanAttack(atom/the_target) +/mob/living/simple_animal/hostile/venus_human_trap/attack_ghost(mob/user) . = ..() if(.) - if(the_target in grasping) - return 0 + return + humanize_plant(user) + +/** + * Sets a ghost to control the plant if the plant is eligible + * + * Asks the interacting ghost if they would like to control the plant. + * If they answer yes, and another ghost hasn't taken control, sets the ghost to control the plant. + * Arguments: + * * mob/user - The ghost to possibly control the plant + */ +/mob/living/simple_animal/hostile/venus_human_trap/proc/humanize_plant(mob/user) + if(key || !playable_plant || stat) + return + var/plant_ask = alert("Become a venus human trap?", "Are you reverse vegan?", "Yes", "No") + if(plant_ask == "No" || QDELETED(src)) + return + if(key) + to_chat(user, "Someone else already took this plant!") + return + key = user.key + log_game("[key_name(src)] took control of [name].") + +/** + * Manages how the vines should affect the things they're attached to. + * + * Pulls all movable targets of the vines closer to the plant + * If the target is on the same tile as the plant, destroy the vine + * Removes any QDELETED vines from the vines list. + */ +/mob/living/simple_animal/hostile/venus_human_trap/proc/pull_vines() + for(var/datum/beam/B in vines) + if(istype(B.target, /atom/movable)) + var/atom/movable/AM = B.target + if(!AM.anchored) + step(AM,get_dir(AM,src)) + if(get_dist(src,B.target) == 0) + B.End() + +/** + * Removes a vine from the list. + * + * Removes the vine from our list. + * Called specifically when the vine is about to be destroyed, so we don't have any null references. + * Arguments: + * * datum/beam/vine - The vine to be removed from the list. + */ +mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force) + vines -= vine diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index 32e6bf2d802..756ecc33249 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -18,7 +18,6 @@ a_intent = INTENT_HARM atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - spacewalk = FALSE status_flags = CANPUSH del_on_death = 1 var/zombiejob = "Medical Doctor" diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index a3795de4cec..95c9b60c146 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -9,7 +9,6 @@ mob_biotypes = MOB_SPIRIT maxHealth = 40 health = 40 - spacewalk = TRUE healable = 0 speak_emote = list("hisses") emote_hear = list("wails.","screeches.") @@ -35,6 +34,10 @@ del_on_death = TRUE initial_language_holder = /datum/language_holder/construct +/mob/living/simple_animal/shade/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + /mob/living/simple_animal/shade/death() deathmessage = "lets out a contented sigh as [p_their()] form unwinds." ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 14ad1dc0617..5867a63be65 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -388,8 +388,8 @@ /mob/living/simple_animal/proc/update_simplemob_varspeed() if(speed == 0) - remove_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE) - add_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE, 100, multiplicative_slowdown = speed, override = TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/simplemob_varspeed) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/simplemob_varspeed, multiplicative_slowdown = speed) /mob/living/simple_animal/Stat() ..() @@ -598,17 +598,13 @@ mode() /mob/living/simple_animal/swap_hand(hand_index) + . = ..() + if(!.) + return if(!dextrous) - return ..() + return if(!hand_index) hand_index = (active_hand_index % held_items.len)+1 - var/obj/item/held_item = get_active_held_item() - if(held_item) - if(istype(held_item, /obj/item/twohanded)) - var/obj/item/twohanded/T = held_item - if(T.wielded == 1) - to_chat(usr, "Your other hand is too busy holding [T].") - return var/oindex = active_hand_index active_hand_index = hand_index if(hud_used) @@ -626,18 +622,12 @@ /mob/living/simple_animal/update_inv_hands() if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - var/obj/item/l_hand = get_item_for_held_index(1) - var/obj/item/r_hand = get_item_for_held_index(2) - if(r_hand) - r_hand.layer = ABOVE_HUD_LAYER - r_hand.plane = ABOVE_HUD_PLANE - r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) - client.screen |= r_hand - if(l_hand) - l_hand.layer = ABOVE_HUD_LAYER - l_hand.plane = ABOVE_HUD_PLANE - l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) - client.screen |= l_hand + for(var/obj/item/I in held_items) + var/index = get_held_index_of_item(I) + I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE + I.screen_loc = ui_hand_position(index) + client.screen |= I //ANIMAL RIDING diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm index 0e2bfc3e45f..7be745b77f7 100644 --- a/code/modules/mob/living/simple_animal/slime/death.dm +++ b/code/modules/mob/living/simple_animal/slime/death.dm @@ -3,7 +3,7 @@ return if(!gibbed) if(is_adult) - var/mob/living/simple_animal/slime/M = new(loc, colour) + var/mob/living/simple_animal/slime/M = new(drop_location(), colour) M.rabid = TRUE M.regenerate_icons() diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 68a098aad57..b1c00605db5 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -241,7 +241,7 @@ update_action_buttons_icon() if(amount_grown >= SLIME_EVOLUTION_THRESHOLD && !buckled && !Target && !ckey) - if(is_adult) + if(is_adult && loc.AllowDrop()) Reproduce() else Evolve() diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index b8a8386368d..3149ad5b723 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -111,8 +111,8 @@ M.unbuckle_all_mobs(force=1) //Slimes rip other mobs (eg: shoulder parrots) off (Slimes Vs Slimes is already handled in CanFeedon()) if(M.buckle_mob(src, force=TRUE)) layer = M.layer+0.01 //appear above the target mob - M.visible_message("[name] has latched onto [M]!", \ - "[name] has latched onto [M]!") + M.visible_message("[name] latches onto [M]!", \ + "[name] latches onto [M]!") else to_chat(src, "I have failed to latch onto the subject!") @@ -124,7 +124,7 @@ "I am not satisified", "I can not feed from this subject", \ "I do not feel nourished", "This subject is not food")]!") if(!silent) - visible_message("[src] has let go of [buckled]!", \ + visible_message("[src] lets go of [buckled]!", \ "I stopped feeding.") layer = initial(layer) buckled.unbuckle_mob(src,force=TRUE) @@ -180,6 +180,7 @@ var/new_nutrition = round(nutrition * 0.9) var/new_powerlevel = round(powerlevel / 4) var/datum/component/nanites/original_nanites = GetComponent(/datum/component/nanites) + var/turf/drop_loc = drop_location() for(var/i=1,i<=4,i++) var/child_colour @@ -190,7 +191,7 @@ else child_colour = colour var/mob/living/simple_animal/slime/M - M = new(loc, child_colour) + M = new(drop_loc, child_colour) if(ckey) M.set_nutrition(new_nutrition) //Player slimes are more robust at spliting. Once an oversight of poor copypasta, now a feature! M.powerlevel = new_powerlevel diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 0e469a4a937..3e18960a75f 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -40,8 +40,6 @@ // for the sake of cleanliness, though, here they are. status_flags = CANUNCONSCIOUS|CANPUSH - hud_type = /datum/hud/slime - var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 @@ -145,14 +143,14 @@ /mob/living/simple_animal/slime/on_reagent_change() . = ..() - remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod) var/amount = 0 if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down amount = 2 if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow amount = 5 if(amount) - add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod, multiplicative_slowdown = amount) /mob/living/simple_animal/slime/updatehealth() . = ..() @@ -163,35 +161,7 @@ mod += (health_deficiency / 25) if(health <= 0) mod += 2 - add_movespeed_modifier(MOVESPEED_ID_SLIME_HEALTHMOD, TRUE, 100, multiplicative_slowdown = mod, override = TRUE) - update_health_hud() - -/mob/living/simple_animal/slime/update_health_hud() - var/severity = 0 - var/healthpercent = (health/maxHealth) * 100 - if(hud_used?.healthdoll) - switch(healthpercent) - if(100 to INFINITY) - severity = 0 - if(80 to 100) - severity = 1 - if(60 to 80) - severity = 2 - if(40 to 60) - severity = 3 - if(20 to 40) - severity = 4 - if(10 to 20) - severity = 5 - if(1 to 20) - severity = 6 - else - severity = 7 - hud_used.healthdoll.icon_state = "slime_health[severity]" - if(severity > 0) - overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) - else - clear_fullscreen("brute") + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_healthmod, multiplicative_slowdown = mod) /mob/living/simple_animal/slime/adjust_bodytemperature() . = ..() @@ -201,7 +171,7 @@ else if(bodytemperature < 283.222) mod = ((283.222 - bodytemperature) / 10) * 1.75 if(mod) - add_movespeed_modifier(MOVESPEED_ID_SLIME_TEMPMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = mod) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_tempmod, multiplicative_slowdown = mod) /mob/living/simple_animal/slime/ObjBump(obj/O) if(!client && powerlevel > 0) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 62dc2c94e20..aaae4c097db 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -439,7 +439,7 @@ update_body() else ADD_TRAIT(src, TRAIT_HUSK, source) - + /mob/living/proc/cure_fakedeath(source) REMOVE_TRAIT(src, TRAIT_FAKEDEATH, source) REMOVE_TRAIT(src, TRAIT_DEATHCOMA, source) @@ -457,10 +457,40 @@ tod = station_time_timestamp() update_stat() +///Unignores all slowdowns that lack the IGNORE_NOSLOW flag. /mob/living/proc/unignore_slowdown(source) REMOVE_TRAIT(src, TRAIT_IGNORESLOWDOWN, source) - update_movespeed(FALSE) + update_movespeed() +///Ignores all slowdowns that lack the IGNORE_NOSLOW flag. /mob/living/proc/ignore_slowdown(source) ADD_TRAIT(src, TRAIT_IGNORESLOWDOWN, source) - update_movespeed(FALSE) + update_movespeed() + +///Ignores specific slowdowns. Accepts a list of slowdowns. +/mob/living/proc/add_movespeed_mod_immunities(source, slowdown_type, update = TRUE) + if(islist(slowdown_type)) + for(var/listed_type in slowdown_type) + if(ispath(listed_type)) + listed_type = "[listed_type]" //Path2String + LAZYADDASSOC(movespeed_mod_immunities, listed_type, source) + else + if(ispath(slowdown_type)) + slowdown_type = "[slowdown_type]" //Path2String + LAZYADDASSOC(movespeed_mod_immunities, slowdown_type, source) + if(update) + update_movespeed() + +///Unignores specific slowdowns. Accepts a list of slowdowns. +/mob/living/proc/remove_movespeed_mod_immunities(source, slowdown_type, update = TRUE) + if(islist(slowdown_type)) + for(var/listed_type in slowdown_type) + if(ispath(listed_type)) + listed_type = "[listed_type]" //Path2String + LAZYREMOVEASSOC(movespeed_mod_immunities, listed_type, source) + else + if(ispath(slowdown_type)) + slowdown_type = "[slowdown_type]" //Path2String + LAZYREMOVEASSOC(movespeed_mod_immunities, slowdown_type, source) + if(update) + update_movespeed() diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index dd78c6761f4..b0afb7301c8 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -22,7 +22,7 @@ * * send signal COMSIG_MOB_CLIENT_LOGIN */ /mob/Login() - GLOB.player_list |= src + add_to_player_list() lastKnownIP = client.address computer_id = client.computer_id log_access("Mob Login: [key_name(src)] was assigned to a [type]") diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index 2456de63548..887ed33bf6c 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -2,13 +2,13 @@ log_message("[key_name(src)] is no longer owning mob [src]([src.type])", LOG_OWNERSHIP) SStgui.on_logout(src) unset_machine() - GLOB.player_list -= src + remove_from_player_list() ..() if(loc) loc.on_log(FALSE) - + if(client) for(var/foo in client.player_details.post_logout_callbacks) var/datum/callback/CB = foo diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 8493309e702..a92692be8a2 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -23,10 +23,9 @@ * Returns QDEL_HINT_HARDDEL (don't change this) */ /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. - GLOB.mob_list -= src - GLOB.dead_mob_list -= src - GLOB.alive_mob_list -= src - GLOB.mob_directory -= tag + remove_from_mob_list() + remove_from_dead_mob_list() + remove_from_alive_mob_list() focus = null for (var/alert in alerts) clear_alert(alert, TRUE) @@ -60,12 +59,11 @@ */ /mob/Initialize() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_CREATED, src) - GLOB.mob_list += src - GLOB.mob_directory[tag] = src + add_to_mob_list() if(stat == DEAD) - GLOB.dead_mob_list += src + add_to_dead_mob_list() else - GLOB.alive_mob_list += src + add_to_alive_mob_list() set_focus(src) prepare_huds() for(var/v in GLOB.active_alternate_appearances) @@ -855,7 +853,11 @@ return FALSE /mob/proc/swap_hand() - return + var/obj/item/held_item = get_active_held_item() + if(SEND_SIGNAL(src, COMSIG_MOB_SWAP_HANDS, held_item) & COMPONENT_BLOCK_SWAP) + to_chat(src, "Your other hand is too busy holding [held_item].") + return FALSE + return TRUE /mob/proc/activate_hand(selhand) return @@ -1230,17 +1232,22 @@ /// Updates the grab state of the mob and updates movespeed /mob/setGrabState(newstate) . = ..() - if(grab_state == GRAB_PASSIVE) - remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE, update=TRUE) - else - add_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=grab_state*3, blacklisted_movetypes=FLOATING) + switch(grab_state) + if(GRAB_PASSIVE) + remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAB_STATE) + if(GRAB_AGGRESSIVE) + add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/aggressive) + if(GRAB_NECK) + add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/neck) + if(GRAB_KILL) + add_movespeed_modifier(/datum/movespeed_modifier/grab_slowdown/kill) /mob/proc/update_equipment_speed_mods() var/speedies = equipped_speed_mods() if(!speedies) - remove_movespeed_modifier(MOVESPEED_ID_MOB_EQUIPMENT, update=TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/equipment_speedmod) else - add_movespeed_modifier(MOVESPEED_ID_MOB_EQUIPMENT, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=speedies, blacklisted_movetypes=FLOATING) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/equipment_speedmod, multiplicative_slowdown = speedies) /// Gets the combined speed modification of all worn items /// Except base mob type doesnt really wear items diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index da79c002bf7..2cfbacccd20 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -16,6 +16,7 @@ pressure_resistance = 8 mouse_drag_pointer = MOUSE_ACTIVE_POINTER throwforce = 10 + blocks_emissive = EMISSIVE_BLOCK_GENERIC var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE var/datum/mind/mind @@ -23,6 +24,8 @@ /// List of movement speed modifiers applying to this mob var/list/movespeed_modification //Lazy list, see mob_movespeed.dm + /// List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources) + var/list/movespeed_mod_immunities //Lazy list, see mob_movespeed.dm /// The calculated mob speed slowdown based on the modifiers list var/cached_multiplicative_slowdown /// List of action hud items the user has @@ -67,9 +70,6 @@ /// What is the mobs real name (name is overridden for disguises etc) var/real_name = null - /// can this mob move freely in space (should be a trait) - var/spacewalk = FALSE - /** * back up of the real name during admin possession * @@ -105,9 +105,9 @@ /// The last known IP of the client who was in this mob var/lastKnownIP = null - /// movable atoms buckled to this mob - var/atom/movable/buckled = null//Living /// movable atom we are buckled to + var/atom/movable/buckled = null//Living + /// movable atoms buckled to this mob var/atom/movable/buckling //Hands @@ -212,3 +212,5 @@ /// Used for tracking last uses of emotes for cooldown purposes var/list/emotes_used + + vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace. diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 276ef4c3028..30d7d133174 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -287,6 +287,7 @@ ///Checks if the mob is able to see or not. eye_blind is temporary blindness, the trait is if they're permanently blind. /mob/proc/is_blind() + SHOULD_BE_PURE(TRUE) return eye_blind ? TRUE : HAS_TRAIT(src, TRAIT_BLIND) ///Is the mob hallucinating? @@ -413,7 +414,7 @@ if((brute_heal > 0 && affecting.brute_dam > 0) || (burn_heal > 0 && affecting.burn_dam > 0)) if(affecting.heal_damage(brute_heal, burn_heal, 0, BODYPART_ROBOTIC)) H.update_damage_overlays() - user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].", \ + user.visible_message("[user] fixes some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].", \ "You fix some of the [dam ? "dents on" : "burnt wires in"] [H == user ? "your" : "[H]'s"] [affecting.name].") return 1 //successful heal else diff --git a/code/modules/mob/mob_lists.dm b/code/modules/mob/mob_lists.dm new file mode 100644 index 00000000000..14f519ec30f --- /dev/null +++ b/code/modules/mob/mob_lists.dm @@ -0,0 +1,119 @@ +///Adds the mob reference to the list and directory of all mobs. Called on Initialize(). +/mob/proc/add_to_mob_list() + GLOB.mob_list |= src + GLOB.mob_directory[tag] = src + +///Removes the mob reference from the list and directory of all mobs. Called on Destroy(). +/mob/proc/remove_from_mob_list() + GLOB.mob_list -= src + GLOB.mob_directory -= tag + +///Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs. +/mob/proc/add_to_alive_mob_list() + GLOB.alive_mob_list |= src + if(client) + add_to_current_living_players() + +///Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs. +/mob/proc/remove_from_alive_mob_list() + GLOB.alive_mob_list -= src + if(client) + remove_from_current_living_players() + + +///Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. +/mob/proc/add_to_dead_mob_list() + GLOB.dead_mob_list |= src + if(client) + add_to_current_dead_players() + +///Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. +/mob/proc/remove_from_dead_mob_list() + GLOB.dead_mob_list -= src + if(client) + remove_from_current_dead_players() + + +///Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login(). +/mob/proc/add_to_player_list() + SHOULD_CALL_PARENT(TRUE) + GLOB.player_list |= src + if(!SSticker?.mode) + return + if(stat == DEAD) + add_to_current_dead_players() + else + add_to_current_living_players() + +///Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout(). +/mob/proc/remove_from_player_list() + SHOULD_CALL_PARENT(TRUE) + GLOB.player_list -= src + if(!SSticker?.mode) + return + if(stat == DEAD) + remove_from_current_dead_players() + else + remove_from_current_living_players() + + +///Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game. +/mob/proc/add_to_current_dead_players() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_DEAD_PLAYERS] |= src + +/mob/dead/observer/add_to_current_dead_players() + if(!SSticker?.mode) + return + if(started_as_observer) + SSticker.mode.current_players[CURRENT_OBSERVERS] |= src + return + return ..() + +/mob/dead/new_player/add_to_current_dead_players() + return + +///Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game. +/mob/proc/remove_from_current_dead_players() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_DEAD_PLAYERS] -= src + +/mob/dead/observer/remove_from_current_dead_players() + if(!SSticker?.mode) + return + if(started_as_observer) + SSticker.mode.current_players[CURRENT_OBSERVERS] -= src + return + return ..() + + +///Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs. +/mob/proc/add_to_current_living_players() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_LIVING_PLAYERS] |= src + if(mind && (mind.special_role || length(mind.antag_datums))) + add_to_current_living_antags() + +///Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs. +/mob/proc/remove_from_current_living_players() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_LIVING_PLAYERS] -= src + if(LAZYLEN(mind?.antag_datums)) + remove_from_current_living_antags() + + +///Adds the cliented mob reference to the list of living antag player-mobs. +/mob/proc/add_to_current_living_antags() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_LIVING_ANTAGS] |= src + +///Removes the mob reference from the list of living antag player-mobs. +/mob/proc/remove_from_current_living_antags() + if(!SSticker?.mode) + return + SSticker.mode.current_players[CURRENT_LIVING_ANTAGS] -= src diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 740a0884138..31fd71f7b42 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -265,7 +265,7 @@ * You can move in space if you have a spacewalk ability */ /mob/Process_Spacemove(movement_dir = 0) - if(spacewalk || ..()) + if(HAS_TRAIT(src, TRAIT_SPACEWALK) || ..()) return TRUE var/atom/movable/backup = get_spacemove_backup() if(backup) @@ -326,9 +326,9 @@ /mob/proc/update_gravity(has_gravity, override=FALSE) var/speed_change = max(0, has_gravity - STANDARD_GRAVITY) if(!speed_change) - remove_movespeed_modifier(MOVESPEED_ID_MOB_GRAVITY, update=TRUE) + remove_movespeed_modifier(/datum/movespeed_modifier/gravity) else - add_movespeed_modifier(MOVESPEED_ID_MOB_GRAVITY, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=speed_change, blacklisted_movetypes=FLOATING) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/gravity, multiplicative_slowdown=speed_change) //bodypart selection verbs - Cyberboss //8:repeated presses toggles through head - eyes - mouth @@ -474,7 +474,7 @@ var/turf/target = get_step_multiz(src, dir) if(!target) if(feedback) - to_chat(src, "There's nothing in that direction!") + to_chat(src, "There's nowhere to go in that direction!") return FALSE if(!canZMove(dir, target)) if(feedback) diff --git a/code/modules/mob/mob_movespeed.dm b/code/modules/mob/mob_movespeed.dm deleted file mode 100644 index 60af7098853..00000000000 --- a/code/modules/mob/mob_movespeed.dm +++ /dev/null @@ -1,166 +0,0 @@ -/*! How move speed for mobs works - -Move speed is now calculated by using a list of movespeed modifiers, which is a list itself (to avoid datum overhead) - -This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be - -THey can have unique sources and a bunch of extra fancy flags that control behaviour - -Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower - -This list takes the following format - -```Current movespeed modification list format: - list( - id = list( - priority, - flags, - legacy slowdown/speedup amount, - movetype_flags - ) - ) -``` - -WHen update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions -this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob -can next move - -Key procs -* [add_movespeed_modifier](mob.html#proc/add_movespeed_modifier) -* [remove_movespeed_modifier](mob.html#proc/remove_movespeed_modifier) -* [has_movespeed_modifier](mob.html#proc/has_movespeed_modifier) -* [update_movespeed](mob.html#proc/update_movespeed) -*/ - -//ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! - -///Add a move speed modifier to a mob -/mob/proc/add_movespeed_modifier(id, update=TRUE, priority=0, flags=NONE, override=FALSE, multiplicative_slowdown=0, movetypes=ALL, blacklisted_movetypes=NONE, conflict=FALSE) - var/list/temp = list(priority, flags, multiplicative_slowdown, movetypes, blacklisted_movetypes, conflict) //build the modification list - var/resort = TRUE - if(LAZYACCESS(movespeed_modification, id)) - var/list/existing_data = movespeed_modification[id] - if(movespeed_modifier_identical_check(existing_data, temp)) - return FALSE - if(!override) - return FALSE - if(priority == existing_data[MOVESPEED_DATA_INDEX_PRIORITY]) - resort = FALSE // We don't need to re-sort if we're replacing something already there and it's the same priority - LAZYSET(movespeed_modification, id, temp) - if(update) - update_movespeed(resort) - return TRUE - -///Remove a move speed modifier from a mob -/mob/proc/remove_movespeed_modifier(id, update = TRUE) - if(!LAZYACCESS(movespeed_modification, id)) - return FALSE - LAZYREMOVE(movespeed_modification, id) - UNSETEMPTY(movespeed_modification) - if(update) - update_movespeed(FALSE) - return TRUE - -///Handles the special case of editing the movement var -/mob/vv_edit_var(var_name, var_value) - var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown)) - var/diff - if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value)) - remove_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT) - diff = var_value - cached_multiplicative_slowdown - . = ..() - if(. && slowdown_edit && isnum(diff)) - add_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT, TRUE, 100, override = TRUE, multiplicative_slowdown = diff) - -///Is there a movespeed modifier for this mob -/mob/proc/has_movespeed_modifier(id) - return LAZYACCESS(movespeed_modification, id) - -///Set or update the global movespeed config on a mob -/mob/proc/update_config_movespeed() - add_movespeed_modifier(MOVESPEED_ID_CONFIG_SPEEDMOD, FALSE, 100, override = TRUE, multiplicative_slowdown = get_config_multiplicative_speed()) - -///Get the global config movespeed of a mob by type -/mob/proc/get_config_multiplicative_speed() - if(!islist(GLOB.mob_config_movespeed_type_lookup) || !GLOB.mob_config_movespeed_type_lookup[type]) - return 0 - else - return GLOB.mob_config_movespeed_type_lookup[type] - -///Go through the list of movespeed modifiers and calculate a final movespeed -/mob/proc/update_movespeed(resort = TRUE) - if(resort) - sort_movespeed_modlist() - . = 0 - var/list/conflict_tracker = list() - for(var/id in get_movespeed_modifiers()) - var/list/data = movespeed_modification[id] - if(!(data[MOVESPEED_DATA_INDEX_MOVETYPE] & movement_type)) // We don't affect any of these move types, skip - continue - if(data[MOVESPEED_DATA_INDEX_BL_MOVETYPE] & movement_type) // There's a movetype here that disables this modifier, skip - continue - var/conflict = data[MOVESPEED_DATA_INDEX_CONFLICT] - var/amt = data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] - if(conflict) - // Conflicting modifiers prioritize the larger slowdown or the larger speedup - // We purposefuly don't handle mixing speedups and slowdowns on the same id - if(abs(conflict_tracker[conflict]) < abs(amt)) - conflict_tracker[conflict] = amt - else - continue - . += amt - cached_multiplicative_slowdown = . - -///Get the move speed modifiers list of the mob -/mob/proc/get_movespeed_modifiers() - return movespeed_modification - -///Check if a movespeed modifier is identical to another -/mob/proc/movespeed_modifier_identical_check(list/mod1, list/mod2) - if(!islist(mod1) || !islist(mod2) || mod1.len < MOVESPEED_DATA_INDEX_MAX || mod2.len < MOVESPEED_DATA_INDEX_MAX) - return FALSE - for(var/i in 1 to MOVESPEED_DATA_INDEX_MAX) - if(mod1[i] != mod2[i]) - return FALSE - return TRUE - -///Calculate the total slowdown of all movespeed modifiers -/mob/proc/total_multiplicative_slowdown() - . = 0 - for(var/id in get_movespeed_modifiers()) - var/list/data = movespeed_modification[id] - . += data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] - -///Checks if a move speed modifier is valid and not missing any data -/proc/movespeed_data_null_check(list/data) //Determines if a data list is not meaningful and should be discarded. - . = TRUE - if(data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN]) - . = FALSE - -/** - * Sort the list of move speed modifiers - * - * Verifies it too. Sorts highest priority (first applied) to lowest priority (last applied) - */ -/mob/proc/sort_movespeed_modlist() - if(!movespeed_modification) - return - var/list/assembled = list() - for(var/our_id in movespeed_modification) - var/list/our_data = movespeed_modification[our_id] - if(!islist(our_data) || (our_data.len < MOVESPEED_DATA_INDEX_PRIORITY) || movespeed_data_null_check(our_data)) - movespeed_modification -= our_id - continue - var/our_priority = our_data[MOVESPEED_DATA_INDEX_PRIORITY] - var/resolved = FALSE - for(var/their_id in assembled) - var/list/their_data = assembled[their_id] - if(their_data[MOVESPEED_DATA_INDEX_PRIORITY] < our_priority) - assembled.Insert(assembled.Find(their_id), our_id) - assembled[our_id] = our_data - resolved = TRUE - break - if(!resolved) - assembled[our_id] = our_data - movespeed_modification = assembled - UNSETEMPTY(movespeed_modification) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 877bda84648..c1b6c5a313a 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -413,7 +413,7 @@ to_chat(user, "Remove all components from \the [src] before disassembling it.") return new /obj/item/stack/sheet/metal( get_turf(src.loc), steel_sheet_cost ) - physical.visible_message("\The [src] has been disassembled by [user].") + physical.visible_message("\The [src] is disassembled by [user].") relay_qdel() qdel(src) return diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index 73cf9c62f48..3ec5bddfad5 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -40,9 +40,8 @@ . = ..() /obj/item/modular_computer/laptop/update_overlays() - . = ..() if(screen_on) - ..() + return ..() else cut_overlays() icon_state = icon_state_closed diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm index af1d88fb80b..d9ca5fab27e 100644 --- a/code/modules/modular_computers/file_system/programs/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/airestorer.dm @@ -11,7 +11,7 @@ tgui_id = "ntos_ai_restorer" ui_x = 370 ui_y = 400 - + /// Variable dictating if we are in the process of restoring the AI in the inserted intellicard var/restoring = FALSE /datum/computer_file/program/aidiag/proc/get_ai(cardcheck) @@ -95,8 +95,10 @@ var/obj/item/aicard/aicard = get_ai(2) + data["ejectable"] = TRUE + data["AI_present"] = FALSE + data["error"] = null if(!aicard) - data["nocard"] = TRUE data["error"] = "Please insert an intelliCard." else if(!AI) @@ -106,12 +108,12 @@ if(cardhold.flush) data["error"] = "Flush in progress" else + data["AI_present"] = TRUE data["name"] = AI.name data["restoring"] = restoring - data["laws"] = AI.laws.get_law_list(include_zeroth = 1) data["health"] = (AI.health + 100) / 2 data["isDead"] = AI.stat == DEAD - data["ai_laws"] = AI.laws.get_law_list(include_zeroth = 1) + data["laws"] = AI.laws.get_law_list(include_zeroth = 1) return data diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index 17db77381a2..ea38eca44c2 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -27,6 +27,7 @@ /datum/computer_file/program/arcade/proc/game_check(mob/user) sleep(5) + user?.mind?.adjust_experience(/datum/skill/gaming, 1) if(boss_hp <= 0) heads_up = "You have crushed [boss_name]! Rejoice!" playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -35,8 +36,8 @@ if(istype(computer)) computer.update_icon() ticket_count += 1 + user?.mind?.adjust_experience(/datum/skill/gaming, 50) sleep(10) - return else if(player_hp <= 0 || player_mp <= 0) heads_up = "You have been defeated... how will the station survive?" playsound(computer.loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -44,9 +45,8 @@ program_icon_state = "arcade_off" if(istype(computer)) computer.update_icon() + user?.mind?.adjust_experience(/datum/skill/gaming, 10) sleep(10) - return - return /datum/computer_file/program/arcade/proc/enemy_check(mob/user) var/boss_attackamt = 0 //Spam protection from boss attacks as well. @@ -94,18 +94,20 @@ data["BossID"] = "boss[boss_id].gif" return data -/datum/computer_file/program/arcade/ui_act(action, list/params, mob/user) +/datum/computer_file/program/arcade/ui_act(action, list/params) if(..()) return TRUE var/obj/item/computer_hardware/printer/printer if(computer) printer = computer.all_components[MC_PRINT] + var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) switch(action) if("Attack") var/attackamt = 0 //Spam prevention. if(pause_state == FALSE) - attackamt = rand(2,6) + attackamt = rand(2,6) + rand(0, gamerSkill) pause_state = TRUE heads_up = "You attack for [attackamt] damage." playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -118,8 +120,11 @@ var/healamt = 0 //More Spam Prevention. var/healcost = 0 if(pause_state == FALSE) - healamt = rand(6,8) - healcost = rand(1,3) + healamt = rand(6,8) + rand(0, gamerSkill) + var/maxPointCost = 3 + if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN) + maxPointCost = 2 + healcost = rand(1, maxPointCost) pause_state = TRUE heads_up = "You heal for [healamt] damage." playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -132,7 +137,7 @@ if("Recharge_Power") var/rechargeamt = 0 //As above. if(pause_state == FALSE) - rechargeamt = rand(4,7) + rechargeamt = rand(4,7) + rand(0, gamerSkill) pause_state = TRUE heads_up = "You regain [rechargeamt] magic power." playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -152,11 +157,11 @@ computer.visible_message("\The [computer] prints out paper.") if(ticket_count >= 1) new /obj/item/stack/arcadeticket((get_turf(computer)), 1) - to_chat(user, "[src] dispenses a ticket!") + to_chat(usr, "[src] dispenses a ticket!") ticket_count -= 1 printer.stored_paper -= 1 else - to_chat(user, "You don't have any stored tickets!") + to_chat(usr, "You don't have any stored tickets!") return TRUE if("Start_Game") game_active = TRUE diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 7ac40123b5a..0c96b5f23a8 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -232,13 +232,13 @@ playsound(computer, "terminal_type", 50, FALSE) return TRUE if("PRG_grantall") - if(!computer || !authenticated) + if(!computer || !authenticated || minor) return id_card.access |= (is_centcom ? get_all_centcom_access() : get_all_accesses()) playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_denyall") - if(!computer || !authenticated) + if(!computer || !authenticated || minor) return id_card.access.Cut() playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) diff --git a/code/modules/movespeed/_movespeed_modifier.dm b/code/modules/movespeed/_movespeed_modifier.dm new file mode 100644 index 00000000000..75fa6a706a6 --- /dev/null +++ b/code/modules/movespeed/_movespeed_modifier.dm @@ -0,0 +1,217 @@ +/*! Movespeed modification datums. + + How move speed for mobs works + +Move speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need. + +This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be + +THey can have unique sources and a bunch of extra fancy flags that control behaviour + +Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower + +Movespeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not. + +DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done. + +When update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions +this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob +can next move + +Key procs +* [add_movespeed_modifier](mob.html#proc/add_movespeed_modifier) +* [remove_movespeed_modifier](mob.html#proc/remove_movespeed_modifier) +* [has_movespeed_modifier](mob.html#proc/has_movespeed_modifier) +* [update_movespeed](mob.html#proc/update_movespeed) +*/ + +/datum/movespeed_modifier + /// Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason) + var/variable = FALSE + + /// Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID. + var/id + + /// Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding. + var/priority = 0 + var/flags = NONE + + /// Multiplicative slowdown + var/multiplicative_slowdown = 0 + + /// Movetypes this applies to + var/movetypes = ALL + + /// Movetypes this never applies to + var/blacklisted_movetypes = NONE + + /// Other modification datums this conflicts with. + var/conflicts_with + +/datum/movespeed_modifier/New() + . = ..() + if(!id) + id = "[type]" //We turn the path into a string. + +GLOBAL_LIST_EMPTY(movespeed_modification_cache) + +/// Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! +/proc/get_cached_movespeed_modifier(modtype) + if(!ispath(modtype, /datum/movespeed_modifier)) + CRASH("[modtype] is not a movespeed modification typepath.") + var/datum/movespeed_modifier/M = modtype + if(initial(M.variable)) + CRASH("[modtype] is a variable modifier, and can never be cached.") + M = GLOB.movespeed_modification_cache[modtype] + if(!M) + M = GLOB.movespeed_modification_cache[modtype] = new modtype + return M + +///Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID. +/mob/proc/add_movespeed_modifier(datum/movespeed_modifier/type_or_datum, update = TRUE) + if(ispath(type_or_datum)) + if(!initial(type_or_datum.variable)) + type_or_datum = get_cached_movespeed_modifier(type_or_datum) + else + type_or_datum = new type_or_datum + var/datum/movespeed_modifier/existing = LAZYACCESS(movespeed_modification, type_or_datum.id) + if(existing) + if(existing == type_or_datum) //same thing don't need to touch + return TRUE + remove_movespeed_modifier(existing, FALSE) + if(length(movespeed_modification)) + BINARY_INSERT(type_or_datum.id, movespeed_modification, datum/movespeed_modifier, type_or_datum, priority, COMPARE_VALUE) + LAZYSET(movespeed_modification, type_or_datum.id, type_or_datum) + if(update) + update_movespeed() + return TRUE + +/// Remove a move speed modifier from a mob, whether static or variable. +/mob/proc/remove_movespeed_modifier(datum/movespeed_modifier/type_id_datum, update = TRUE) + var/key + if(ispath(type_id_datum)) + key = initial(type_id_datum.id) || "[type_id_datum]" //id if set, path set to string if not. + else if(!istext(type_id_datum)) //if it isn't text it has to be a datum, as it isn't a type. + key = type_id_datum.id + else //assume it's an id + key = type_id_datum + if(!LAZYACCESS(movespeed_modification, key)) + return FALSE + LAZYREMOVE(movespeed_modification, key) + if(update) + update_movespeed(FALSE) + return TRUE + +/*! Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful + How this SHOULD work is: + 1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list. + 2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only. + 3. Add the datum if necessary using the regular add proc + 4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum + 5. Update if necessary +*/ +/mob/proc/add_or_update_variable_movespeed_modifier(datum/movespeed_modifier/type_id_datum, update = TRUE, multiplicative_slowdown) + var/modified = FALSE + var/inject = FALSE + var/datum/movespeed_modifier/final + if(istext(type_id_datum)) + final = LAZYACCESS(movespeed_modification, type_id_datum) + if(!final) + CRASH("Couldn't find existing modification when provided a text ID.") + else if(ispath(type_id_datum)) + if(!initial(type_id_datum.variable)) + CRASH("Not a variable modifier") + final = LAZYACCESS(movespeed_modification, initial(type_id_datum.id) || "[type_id_datum]") + if(!final) + final = new type_id_datum + inject = TRUE + modified = TRUE + else + if(!initial(type_id_datum.variable)) + CRASH("Not a variable modifier") + final = type_id_datum + if(!LAZYACCESS(movespeed_modification, final.id)) + inject = TRUE + modified = TRUE + if(!isnull(multiplicative_slowdown)) + final.multiplicative_slowdown = multiplicative_slowdown + modified = TRUE + if(inject) + add_movespeed_modifier(final, FALSE) + if(update && modified) + update_movespeed(TRUE) + return final + +/// Handles the special case of editing the movement var +/mob/vv_edit_var(var_name, var_value) + var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown)) + var/diff + if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value)) + remove_movespeed_modifier(/datum/movespeed_modifier/admin_varedit) + diff = var_value - cached_multiplicative_slowdown + . = ..() + if(. && slowdown_edit && isnum(diff)) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/admin_varedit, multiplicative_slowdown = diff) + +///Is there a movespeed modifier for this mob +/mob/proc/has_movespeed_modifier(datum/movespeed_modifier/datum_type_id) + var/key + if(ispath(datum_type_id)) + key = initial(datum_type_id.id) || "[datum_type_id]" + else if(istext(datum_type_id)) + key = datum_type_id + else + key = datum_type_id.id + return LAZYACCESS(movespeed_modification, key) + +/// Set or update the global movespeed config on a mob +/mob/proc/update_config_movespeed() + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/mob_config_speedmod, multiplicative_slowdown = get_config_multiplicative_speed()) + +/// Get the global config movespeed of a mob by type +/mob/proc/get_config_multiplicative_speed() + if(!islist(GLOB.mob_config_movespeed_type_lookup) || !GLOB.mob_config_movespeed_type_lookup[type]) + return 0 + else + return GLOB.mob_config_movespeed_type_lookup[type] + +/// Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! +/mob/proc/update_movespeed() + . = 0 + var/list/conflict_tracker = list() + for(var/key in get_movespeed_modifiers()) + var/datum/movespeed_modifier/M = movespeed_modification[key] + if(!(M.movetypes & movement_type)) // We don't affect any of these move types, skip + continue + if(M.blacklisted_movetypes & movement_type) // There's a movetype here that disables this modifier, skip + continue + var/conflict = M.conflicts_with + var/amt = M.multiplicative_slowdown + if(conflict) + // Conflicting modifiers prioritize the larger slowdown or the larger speedup + // We purposefuly don't handle mixing speedups and slowdowns on the same id + if(abs(conflict_tracker[conflict]) < abs(amt)) + conflict_tracker[conflict] = amt + else + continue + . += amt + cached_multiplicative_slowdown = . + +/// Get the move speed modifiers list of the mob +/mob/proc/get_movespeed_modifiers() + . = movespeed_modification + for(var/id in movespeed_mod_immunities) + . -= id + +/// Calculate the total slowdown of all movespeed modifiers +/mob/proc/total_multiplicative_slowdown() + . = 0 + for(var/id in get_movespeed_modifiers()) + var/datum/movespeed_modifier/M = movespeed_modification[id] + . += M.multiplicative_slowdown + +/// Checks if a move speed modifier is valid and not missing any data +/proc/movespeed_data_null_check(datum/movespeed_modifier/M) //Determines if a data list is not meaningful and should be discarded. + . = TRUE + if(M.multiplicative_slowdown) + . = FALSE diff --git a/code/modules/movespeed/modifiers/components.dm b/code/modules/movespeed/modifiers/components.dm new file mode 100644 index 00000000000..1a7aff3e0f8 --- /dev/null +++ b/code/modules/movespeed/modifiers/components.dm @@ -0,0 +1,21 @@ +/datum/movespeed_modifier/shrink_ray + movetypes = GROUND + multiplicative_slowdown = 4 + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/snail_crawl + multiplicative_slowdown = -7 + movetypes = GROUND + +/datum/movespeed_modifier/sanity + id = MOVESPEED_ID_SANITY + movetypes = (~FLYING) + +/datum/movespeed_modifier/sanity/insane + multiplicative_slowdown = 1 + +/datum/movespeed_modifier/sanity/crazy + multiplicative_slowdown = 0.5 + +/datum/movespeed_modifier/sanity/disturbed + multiplicative_slowdown = 0.25 diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm new file mode 100644 index 00000000000..46fc82269ea --- /dev/null +++ b/code/modules/movespeed/modifiers/innate.dm @@ -0,0 +1,15 @@ +/datum/movespeed_modifier/strained_muscles + multiplicative_slowdown = -0.55 + blacklisted_movetypes = (FLYING|FLOATING) + +/datum/movespeed_modifier/pai_spacewalk + multiplicative_slowdown = 2 + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/species + movetypes = ~FLYING + variable = TRUE + +/datum/movespeed_modifier/dna_vault_speedup + blacklisted_movetypes = (FLYING|FLOATING) + multiplicative_slowdown = -0.4 diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm new file mode 100644 index 00000000000..e36c05dccee --- /dev/null +++ b/code/modules/movespeed/modifiers/items.dm @@ -0,0 +1,12 @@ +/datum/movespeed_modifier/jetpack + conflicts_with = MOVE_CONFLICT_JETPACK + movetypes = FLOATING + +/datum/movespeed_modifier/jetpack/cybernetic + multiplicative_slowdown = -0.5 + +/datum/movespeed_modifier/jetpack/fullspeed + multiplicative_slowdown = -0.5 + +/datum/movespeed_modifier/die_of_fate + multiplicative_slowdown = 1 diff --git a/code/modules/movespeed/modifiers/misc.dm b/code/modules/movespeed/modifiers/misc.dm new file mode 100644 index 00000000000..e3aba912966 --- /dev/null +++ b/code/modules/movespeed/modifiers/misc.dm @@ -0,0 +1,6 @@ +/datum/movespeed_modifier/admin_varedit + variable = TRUE + +/datum/movespeed_modifier/yellow_orb + multiplicative_slowdown = -0.65 + blacklisted_movetypes = (FLYING|FLOATING) diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm new file mode 100644 index 00000000000..ac3bb468503 --- /dev/null +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -0,0 +1,113 @@ +/datum/movespeed_modifier/obesity + multiplicative_slowdown = 1.5 + +/datum/movespeed_modifier/monkey_reagent_speedmod + variable = TRUE + +/datum/movespeed_modifier/monkey_health_speedmod + variable = TRUE + +/datum/movespeed_modifier/monkey_temperature_speedmod + variable = TRUE + +/datum/movespeed_modifier/hunger + variable = TRUE + +/datum/movespeed_modifier/slaughter + multiplicative_slowdown = -1 + +/datum/movespeed_modifier/damage_slowdown + blacklisted_movetypes = FLOATING|FLYING + variable = TRUE + +/datum/movespeed_modifier/damage_slowdown_flying + movetypes = FLOATING + variable = TRUE + +/datum/movespeed_modifier/equipment_speedmod + variable = TRUE + blacklisted_movetypes = FLOATING + +/datum/movespeed_modifier/grab_slowdown + id = MOVESPEED_ID_MOB_GRAB_STATE + blacklisted_movetypes = FLOATING + +/datum/movespeed_modifier/grab_slowdown/aggressive + multiplicative_slowdown = 3 + +/datum/movespeed_modifier/grab_slowdown/neck + multiplicative_slowdown = 6 + +/datum/movespeed_modifier/grab_slowdown/kill + multiplicative_slowdown = 9 + +/datum/movespeed_modifier/slime_reagentmod + variable = TRUE + +/datum/movespeed_modifier/slime_healthmod + variable = TRUE + +/datum/movespeed_modifier/config_walk_run + multiplicative_slowdown = 1 + id = MOVESPEED_ID_MOB_WALK_RUN + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/config_walk_run/proc/sync() + +/datum/movespeed_modifier/config_walk_run/walk/sync() + var/mod = CONFIG_GET(number/movedelay/walk_delay) + multiplicative_slowdown = isnum(mod)? mod : initial(multiplicative_slowdown) + +/datum/movespeed_modifier/config_walk_run/run/sync() + var/mod = CONFIG_GET(number/movedelay/run_delay) + multiplicative_slowdown = isnum(mod)? mod : initial(multiplicative_slowdown) + +/datum/movespeed_modifier/turf_slowdown + movetypes = GROUND + blacklisted_movetypes = (FLYING|FLOATING) + variable = TRUE + +/datum/movespeed_modifier/bulky_drag + variable = TRUE + +/datum/movespeed_modifier/cold + blacklisted_movetypes = FLOATING + variable = TRUE + +/datum/movespeed_modifier/shove + multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH + +/datum/movespeed_modifier/human_carry + multiplicative_slowdown = HUMAN_CARRY_SLOWDOWN + +/datum/movespeed_modifier/limbless + variable = TRUE + movetypes = GROUND + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/simplemob_varspeed + variable = TRUE + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/tarantula_web + multiplicative_slowdown = 3 + +/datum/movespeed_modifier/gravity + blacklisted_movetypes = FLOATING + variable = TRUE + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/carbon_softcrit + multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/slime_tempmod + variable = TRUE + +/datum/movespeed_modifier/carbon_crawling + multiplicative_slowdown = CRAWLING_ADD_SLOWDOWN + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/mob_config_speedmod + variable = TRUE + flags = IGNORE_NOSLOW diff --git a/code/modules/movespeed/modifiers/reagent.dm b/code/modules/movespeed/modifiers/reagent.dm new file mode 100644 index 00000000000..698e1aa13c5 --- /dev/null +++ b/code/modules/movespeed/modifiers/reagent.dm @@ -0,0 +1,35 @@ +/datum/movespeed_modifier/reagent + blacklisted_movetypes = (FLYING|FLOATING) + +/datum/movespeed_modifier/reagent/stimulants + multiplicative_slowdown = -0.55 + +/datum/movespeed_modifier/reagent/ephedrine + multiplicative_slowdown = -0.5 + +/datum/movespeed_modifier/reagent/pepperspray + multiplicative_slowdown = 0.25 + +/datum/movespeed_modifier/reagent/badstims + multiplicative_slowdown = -0.45 + +/datum/movespeed_modifier/reagent/monkey_energy + multiplicative_slowdown = -0.35 + +/datum/movespeed_modifier/reagent/changelinghaste + multiplicative_slowdown = -0.8 + +/datum/movespeed_modifier/reagent/methamphetamine + multiplicative_slowdown = -0.65 + +/datum/movespeed_modifier/reagent/nitryl + multiplicative_slowdown = -0.65 + +/datum/movespeed_modifier/reagent/freon + multiplicative_slowdown = 1.6 + +/datum/movespeed_modifier/reagent/lenturi + multiplicative_slowdown = 1.5 + +/datum/movespeed_modifier/reagent/nuka_cola + multiplicative_slowdown = -0.35 diff --git a/code/modules/movespeed/modifiers/status_effects.dm b/code/modules/movespeed/modifiers/status_effects.dm new file mode 100644 index 00000000000..506a4672ef1 --- /dev/null +++ b/code/modules/movespeed/modifiers/status_effects.dm @@ -0,0 +1,17 @@ +/datum/movespeed_modifier/status_effect/bloodchill + multiplicative_slowdown = 3 + +/datum/movespeed_modifier/status_effect/bonechill + multiplicative_slowdown = 3 + +/datum/movespeed_modifier/status_effect/lightpink + multiplicative_slowdown = -0.5 + blacklisted_movetypes = (FLYING|FLOATING) + +/datum/movespeed_modifier/status_effect/tarfoot + multiplicative_slowdown = 0.5 + blacklisted_movetypes = (FLYING|FLOATING) + +/datum/movespeed_modifier/status_effect/sepia + variable = TRUE + blacklisted_movetypes = (FLYING|FLOATING) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 2e073c2236c..e4b512ecd3f 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -34,7 +34,7 @@ It is possible to destroy the net by the occupant or someone else. /obj/structure/energy_net/Destroy() if(!success) if(!QDELETED(affecting)) - affecting.visible_message("[affecting.name] was recovered from the energy net!", "You were recovered from the energy net!", "You hear a grunt.") + affecting.visible_message("[affecting.name] is recovered from the energy net!", "You are recovered from the energy net!", "You hear a grunt.") if(!QDELETED(master))//As long as they still exist. to_chat(master, "ERROR: unable to initiate transport protocol. Procedure terminated.") return ..() diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 3b344dacda6..91c9a8fa14c 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -11,7 +11,6 @@ H.SetParalyzed(0) H.adjustStaminaLoss(-75) H.stuttering = 0 - H.lying = 0 H.update_mobility() H.reagents.add_reagent(/datum/reagent/medicine/stimulants, 5) H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost") diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 684dcc7c92b..d028cf8567b 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -125,7 +125,7 @@ var/obj/item/paper/P = new /obj/item/paper(src) P.info = "
Security Record

" P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nGender: [G.fields["gender"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" - P.info += "
\n
Security Data

\nCriminal Status: [S.fields["criminal"]]
\n
\nMinor Crimes: [S.fields["mi_crim"]]
\nDetails: [S.fields["mi_crim_d"]]
\n
\nMajor Crimes: [S.fields["ma_crim"]]
\nDetails: [S.fields["ma_crim_d"]]
\n
\nImportant Notes:
\n\t[S.fields["notes"]]
\n
\n
Comments/Log

" + P.info += "
\n
Security Data

\nCriminal Status: [S.fields["criminal"]]
\n
\nCrimes: [S.fields["crim"]]
\nDetails: [S.fields["crim_d"]]
\n
\nImportant Notes:
\n\t[S.fields["notes"]]
\n
\n
Comments/Log

" var/counter = 1 while(S.fields["com_[counter]"]) P.info += "[S.fields["com_[counter]"]]
" diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index d22cd747ca7..10def176c53 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -1,6 +1,6 @@ /obj/item/hand_labeler name = "hand labeler" - desc = "A combined label printer and applicator in a portable device, designed to be easy to operate and use." + desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use." icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler0" item_state = "flight" @@ -55,9 +55,10 @@ to_chat(user, "You can't label creatures!") // use a collar return - user.visible_message("[user] labels [A] as [label].", \ - "You label [A] as [label].") - A.name = "[A.name] ([label])" + user.visible_message("[user] labels [A] with \"[label]\".", \ + "You label [A] with \"[label]\".") + A.AddComponent(/datum/component/label, label) + playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE) labels_left-- diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 2e79766f296..5243e6fe9de 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -9,6 +9,17 @@ /obj/item/paper/fluff/shuttles/daniel info = "i love daniel
daniel is my best friend

you are tearing me apart elise" +/obj/item/paper/fluff/jobs/prisoner/letter + name = "letter from home" + info = {"Dearest sweetheart, +
It is truly saddening you must spend your time locked up in an awful prison on that dangerous station. I have spoken to your lawyer who will attempt to appeal to the judge so your sentence may hopefully be reduced. +
Regardless, I just want you to understand that all of us out here still love you, and want to see you released safely some day! I know that prison can be a very vicious place, so please promise us you'll avoid getting into any fights or trouble, okay? +
We all care for your safety deeply, and could not live with ourselves if you ended up getting hurt. We've scheduled a visit to see you, and with any luck, hopefully our request will be granted soon. +
Anyways, please do your best to make it by in that place, and never forget we'll be always here for you, no matter if we're separated. +
+
Please stay safe, +
-Love, Your Dearest"} + //////////// Job guides n' fluff diff --git a/code/modules/photography/camera/camera_image_capturing.dm b/code/modules/photography/camera/camera_image_capturing.dm index bec09abb542..f01c51e87ad 100644 --- a/code/modules/photography/camera/camera_image_capturing.dm +++ b/code/modules/photography/camera/camera_image_capturing.dm @@ -11,7 +11,7 @@ step_y = AM.step_y if(iscarbon(A)) var/mob/living/carbon/C = A - turn_angle = C.lying + UNLINT(turn_angle = C.lying) // this is the only place its okay to read lying directly . = ..() /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) diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm index 0b141d764a3..9d8699db3b4 100644 --- a/code/modules/plumbing/ducts.dm +++ b/code/modules/plumbing/ducts.dm @@ -7,7 +7,7 @@ All the important duct code: name = "fluid duct" icon = 'icons/obj/plumbing/fluid_ducts.dmi' icon_state = "nduct" - level = 1 + ///bitfield with the directions we're connected in var/connects ///set to TRUE to disable smart duct behaviour @@ -36,14 +36,16 @@ All the important duct code: ///wheter we just unanchored or drop whatever is in the variable. either is safe var/drop_on_wrench = /obj/item/stack/ducts -/obj/machinery/duct/Initialize(mapload, no_anchor, color_of_duct, layer_of_duct = DUCT_LAYER_DEFAULT, force_connects) +/obj/machinery/duct/Initialize(mapload, no_anchor, color_of_duct = "#ffffff", layer_of_duct = DUCT_LAYER_DEFAULT, force_connects) . = ..() + if(no_anchor) active = FALSE anchored = FALSE else if(!can_anchor()) qdel(src) CRASH("Overlapping ducts detected") + if(force_connects) connects = force_connects //skip change_connects() because we're still initializing and we need to set our connects at one point if(!lock_layers) @@ -52,15 +54,20 @@ All the important duct code: duct_color = color_of_duct if(duct_color) add_atom_colour(duct_color, FIXED_COLOUR_PRIORITY) + handle_layer() + for(var/obj/machinery/duct/D in loc) if(D == src) continue if(D.duct_layer & duct_layer) disconnect_duct() + if(active) attempt_connect() + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) + ///start looking around us for stuff to connect to /obj/machinery/duct/proc/attempt_connect() @@ -289,7 +296,7 @@ All the important duct code: if(!T) T = get_turf(src) for(var/obj/machinery/duct/D in T) - if(!anchored) + if(!anchored || D == src) continue for(var/A in GLOB.cardinals) if(A & connects && A & D.connects) @@ -325,6 +332,7 @@ All the important duct code: add_neighbour(D, direction) connect_network(D, direction, TRUE) update_icon() + ///has a total of 5 layers and doesnt give a shit about color. its also dumb so doesnt autoconnect. /obj/machinery/duct/multilayered name = "duct layer-manifold" diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm index 3cd3099a4b9..5c00404e81e 100644 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm @@ -29,7 +29,7 @@ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) /obj/machinery/plumbing/proc/can_be_rotated(mob/user,rotation_type) - return TRUE + return !anchored /obj/machinery/plumbing/examine(mob/user) . = ..() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 89aff9c2ac5..ed6e289e853 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -326,12 +326,17 @@ if(update & 2) SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) if(!(machine_stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD) - SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, EMISSIVE_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, EMISSIVE_PLANE, dir) if(operating) - SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, EMISSIVE_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, EMISSIVE_PLANE, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, plane, dir) + SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, EMISSIVE_PLANE, dir) // And now, separately for cleanness, the lighting changing if(update_state & UPSTATE_ALLGOOD) @@ -439,23 +444,23 @@ if (has_electronics == APC_ELECTRONICS_INSTALLED) has_electronics = APC_ELECTRONICS_MISSING if (machine_stat & BROKEN) - user.visible_message("[user.name] has broken the power control board inside [src.name]!",\ + user.visible_message("[user.name] breaks the power control board inside [src.name]!",\ "You break the charred power control board and remove the remains.", "You hear a crack.") return else if (obj_flags & EMAGGED) obj_flags &= ~EMAGGED - user.visible_message("[user.name] has discarded an emagged power control board from [src.name]!",\ + user.visible_message("[user.name] discards an emagged power control board from [src.name]!",\ "You discard the emagged power control board.") return else if (malfhack) - user.visible_message("[user.name] has discarded a strangely programmed power control board from [src.name]!",\ + user.visible_message("[user.name] discards a strangely programmed power control board from [src.name]!",\ "You discard the strangely programmed board.") malfai = null malfhack = 0 return else - user.visible_message("[user.name] has removed the power control board from [src.name]!",\ + user.visible_message("[user.name] removes the power control board from [src.name]!",\ "You remove the power control board.") new /obj/item/electronics/apc(loc) return @@ -532,11 +537,11 @@ if(W.use_tool(src, user, 50, volume=50, amount=3)) if ((machine_stat & BROKEN) || opened==APC_COVER_REMOVED) new /obj/item/stack/sheet/metal(loc) - user.visible_message("[user.name] has cut [src] apart with [W].",\ + user.visible_message("[user.name] cuts [src] apart with [W].",\ "You disassembled the broken APC frame.") else new /obj/item/wallframe/apc(loc) - user.visible_message("[user.name] has cut [src] from the wall with [W].",\ + user.visible_message("[user.name] cuts [src] from the wall with [W].",\ "You cut the APC frame from the wall.") qdel(src) return TRUE @@ -557,7 +562,7 @@ if(!user.transferItemToLoc(W, src)) return cell = W - user.visible_message("[user.name] has inserted the power cell to [src.name]!",\ + user.visible_message("[user.name] inserts the power cell to [src.name]!",\ "You insert the power cell.") chargecount = 0 update_icon() @@ -800,7 +805,8 @@ if(isethereal(user)) var/mob/living/carbon/human/H = user - if(H.a_intent == INTENT_HARM) + var/datum/species/ethereal/E = H.dna.species + if((H.a_intent == INTENT_HARM) && (E.drain_time < world.time)) if(cell.charge <= (cell.maxcharge / 2)) // if charge is under 50% you shouldnt drain it to_chat(H, "The APC doesn't have much power, you probably shouldn't drain any.") return @@ -808,6 +814,7 @@ if(stomach.crystal_charge > 145) to_chat(H, "Your charge is full!") return + E.drain_time = world.time + 75 to_chat(H, "You start channeling some power through the APC into your body.") if(do_after(user, 75, target = src)) if(cell.charge <= (cell.maxcharge / 2) || (stomach.crystal_charge > 145)) @@ -819,7 +826,7 @@ else to_chat(H, "You can't receive charge from the APC!") return - if(H.a_intent == INTENT_GRAB) + if((H.a_intent == INTENT_GRAB) && (E.drain_time < world.time)) if(cell.charge == cell.maxcharge) to_chat(H, "The APC is full!") return @@ -827,6 +834,7 @@ if(stomach.crystal_charge < 10) to_chat(H, "Your charge is too low!") return + E.drain_time = world.time + 75 to_chat(H, "You start channeling power through your body into the APC.") if(do_after(user, 75, target = src)) if(cell.charge == cell.maxcharge || (stomach.crystal_charge < 10)) @@ -1083,10 +1091,10 @@ occupier.eyeobj.name = "[occupier.name] (AI Eye)" if(malf.parent) qdel(malf) - occupier.verbs += /mob/living/silicon/ai/proc/corereturn + var/datum/action/innate/core_return/CR = new + CR.Grant(occupier) occupier.cancel_camera() - /obj/machinery/power/apc/proc/malfvacate(forced) if(!occupier) return @@ -1095,7 +1103,6 @@ occupier.parent.shunted = 0 occupier.parent.setOxyLoss(occupier.getOxyLoss()) occupier.parent.cancel_camera() - occupier.parent.verbs -= /mob/living/silicon/ai/proc/corereturn qdel(occupier) else to_chat(occupier, "Primary core damaged, unable to return core processes.") diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index f080a894523..9e65edb2206 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -17,7 +17,6 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri icon = 'icons/obj/power_cond/layer_cable.dmi' icon_state = "l2-1-2-4-8-node" color = "yellow" - level = 1 //is underfloor layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER anchored = TRUE obj_flags = CAN_BE_HIT | ON_BLUEPRINTS @@ -41,12 +40,11 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri /obj/structure/cable/Initialize(mapload) . = ..() - var/turf/T = get_turf(src) // hide if turf is not intact - if(level==1) - hide(T.intact) GLOB.cable_list += src //add it to the global cable list connect_wire() + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) + /obj/structure/cable/proc/connect_wire(clear_before_updating = FALSE) var/under_thing = NONE if(clear_before_updating) @@ -82,7 +80,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri continue var/inverse = turn(check_dir, 180) for(var/obj/structure/cable/C in TB) - if(C.cable_layer == cable_layer) + if(C.cable_layer & cable_layer) linked_dirs |= check_dir C.linked_dirs |= inverse C.update_icon() @@ -96,7 +94,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri if(linked_dirs & check_dir) var/TB = get_step(loc, check_dir) for(var/obj/structure/cable/C in TB) - if(cable_layer == C.cable_layer) + if(cable_layer & C.cable_layer) C.linked_dirs &= ~inverse C.update_icon() @@ -115,15 +113,9 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri // General procedures /////////////////////////////////// -//If underfloor, hide the cable -/obj/structure/cable/hide(i) - if(level == 1 && isturf(loc)) - invisibility = i ? INVISIBILITY_MAXIMUM : 0 - update_icon() - /obj/structure/cable/update_icon_state() if(!linked_dirs) - icon_state = "[cable_layer]-noconnection" + icon_state = "l[cable_layer]-noconnection" else var/list/dir_icon_list = list() for(var/check_dir in GLOB.cardinals) @@ -140,7 +132,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri if(P.should_have_node()) dir_string = "[dir_string]-node" break - dir_string = "[cable_layer]-[dir_string]" + dir_string = "l[cable_layer]-[dir_string]" icon_state = dir_string @@ -250,7 +242,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri if(src == C) continue - if(cable_layer != C.cable_layer) + if(!(cable_layer & C.cable_layer)) continue if(C.linked_dirs & inverse_dir) //we've got a matching cable in the neighbor turf @@ -314,7 +306,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri if(linked_dirs & check_dir) T = get_step(src, check_dir) for(var/obj/structure/cable/C in T) - if(cable_layer == C.cable_layer) + if(cable_layer & C.cable_layer) . += C /obj/structure/cable/proc/get_machine_connections(powernetless_only) @@ -434,6 +426,8 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list(new/datum/stack_recipe("cable restrain return TRUE /obj/item/stack/cable_coil/CtrlClick(mob/living/user) + if(loc!=user) + return ..() if(!user) return var/list/layer_list = list( @@ -560,7 +554,6 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list(new/datum/stack_recipe("cable restrain desc = "A bridge to connect different cable layers, or link terminals to incompatible cable layers." icon = 'icons/obj/power.dmi' icon_state = "cable_bridge" - level = 1 //is underfloor layer = WIRE_LAYER + 0.02 //Above all the cables but below terminals anchored = TRUE obj_flags = CAN_BE_HIT | ON_BLUEPRINTS diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index d92c9798677..6e2cc1c4ab1 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -151,6 +151,9 @@ /obj/item/stock_parts/cell/attack_self(mob/user) if(isethereal(user)) var/mob/living/carbon/human/H = user + var/datum/species/ethereal/E = H.dna.species + if(E.drain_time > world.time) + return if(charge < 100) to_chat(H, "The [src] doesn't have enough power!") return @@ -159,7 +162,8 @@ to_chat(H, "Your charge is full!") return to_chat(H, "You clumsily channel power through the [src] and into your body, wasting some in the process.") - if(do_after(user, 5, target = src)) + E.drain_time = world.time + 20 + if(do_after(user, 20, target = src)) if((charge < 100) || (stomach.crystal_charge > 146)) return if(istype(stomach)) @@ -221,6 +225,14 @@ charge = 0 update_icon() +/obj/item/stock_parts/cell/mini_egun + name = "miniature energy gun power cell" + maxcharge = 600 + +/obj/item/stock_parts/cell/hos_gun + name = "X-01 multiphase energy gun power cell" + maxcharge = 1200 + /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" maxcharge = 400000 diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 3aa7bef97d3..e112b38f2fd 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -128,7 +128,6 @@ else current-- change_setting(current, user) - ..() /obj/machinery/power/floodlight/obj_break(damage_flag) . = ..() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 997f5e9beb2..11853daf478 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -243,6 +243,11 @@ status = LIGHT_BROKEN icon_state = "tube-broken" +/obj/machinery/light/dim + nightshift_allowed = FALSE + bulb_colour = "#FFDDCC" + bulb_power = 0.8 + // the smaller bulb light fixture /obj/machinery/light/small @@ -337,7 +342,7 @@ /obj/machinery/light/update_overlays() . = ..() if(on && status == LIGHT_OK) - var/mutable_appearance/glowybit = mutable_appearance(overlayicon, base_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) + var/mutable_appearance/glowybit = mutable_appearance(overlayicon, base_state, layer, EMISSIVE_PLANE) glowybit.alpha = clamp(light_power*250, 30, 200) . += glowybit @@ -641,8 +646,12 @@ if(istype(H)) var/datum/species/ethereal/eth_species = H.dna?.species if(istype(eth_species)) + var/datum/species/ethereal/E = H.dna.species + if(E.drain_time > world.time) + return to_chat(H, "You start channeling some power through the [fitting] into your body.") - while(do_after(user, 20, target = src)) + E.drain_time = world.time + 30 + if(do_after(user, 30, target = src)) var/obj/item/organ/stomach/ethereal/stomach = H.getorganslot(ORGAN_SLOT_STOMACH) if(istype(stomach)) to_chat(H, "You receive some charge from the [fitting].") diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm index c1cf1924f8a..3ad0d8be6df 100644 --- a/code/modules/power/multiz.dm +++ b/code/modules/power/multiz.dm @@ -28,31 +28,29 @@ if(default_unfasten_wrench(user, I)) if(!anchored && broken_status == RELAY_OK) break_connections() - return return FALSE - if(istype(I, /obj/item/stack/cable_coil) && broken_status == RELAY_ADD_CABLE) + else if(istype(I, /obj/item/stack/cable_coil) && broken_status == RELAY_ADD_CABLE) var/obj/item/stack/C = I if(C.use(15)) to_chat(user, "You fix the frayed wires inside [src].") icon_state = "cablerelay-broken-cable" broken_status = RELAY_ADD_METAL - return else to_chat(user, "You need 15 cables to rewire [src].") - return - if(istype(I, /obj/item/stack/sheet/metal) && broken_status == RELAY_ADD_METAL) + + else if(istype(I, /obj/item/stack/sheet/metal) && broken_status == RELAY_ADD_METAL) var/obj/item/stack/S = I if(S.use(10)) to_chat(user, "You reseal the insulation for [src].") icon_state = "cablerelay" broken_status = RELAY_OK obj_integrity = max_integrity - return else to_chat(user, "You need 10 metal to mend [src].") - return - . = ..() + + else + return ..() /obj/machinery/power/deck_relay/obj_break() ..() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index f4b2208a5cb..7fef862f9db 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -354,12 +354,12 @@ /////////////////////////////////////////////// // return a cable if there's one on the turf, null if there isn't one -/turf/proc/get_cable_node() +/turf/proc/get_cable_node(check_layer = CABLE_LAYER_2) if(!can_have_cabling()) return null var/obj/structure/cable_bridge/B = locate() in src for(var/obj/structure/cable/C in src) - if(C.cable_layer == CABLE_LAYER_2 || B) + if(C.cable_layer & check_layer || B) C.update_icon() return C return null diff --git a/code/modules/power/singularity/boh_tear.dm b/code/modules/power/singularity/boh_tear.dm index 697425246a0..a0a90a4a104 100644 --- a/code/modules/power/singularity/boh_tear.dm +++ b/code/modules/power/singularity/boh_tear.dm @@ -16,13 +16,19 @@ allowed_size = STAGE_SIX var/ghosts = list() var/old_loc + var/start_time = 0 /obj/singularity/boh_tear/Initialize() . = ..() old_loc = loc + start_time = world.time QDEL_IN(src, 5 SECONDS) // vanishes after 5 seconds /obj/singularity/boh_tear/process() + //Backup to catch timerss errors + if(start_time + (10 SECONDS) < world.time) + stack_trace("The timer subsytem isn't firing properly, yell at your local coders posthaste") + qdel(src) eat() /obj/singularity/boh_tear/consume(atom/A) diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 5900286f860..84023a28950 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -65,6 +65,7 @@ return ..() /obj/machinery/field/containment/Crossed(atom/movable/AM) + . = ..() if(isliving(AM)) shock(AM) @@ -122,7 +123,7 @@ if(prob(20)) user.Stun(40) user.take_overall_damage(0, shock_damage) - user.visible_message("[user.name] was shocked by the [src.name]!", \ + user.visible_message("[user.name] is shocked by the [src.name]!", \ "Energy pulse detected, system damaged!", \ "You hear an electrical crack.") diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 57f4a77fc2c..050d31b37c2 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -44,6 +44,7 @@ movement_range = 0 /obj/effect/accelerated_particle/Crossed(atom/A) + . = ..() if(isliving(A)) toxmob(A) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index a8d889ef0f2..35924a9455d 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -9,15 +9,17 @@ idle_power_usage = 500 active_power_usage = 10000 dir = NORTH + mouse_opacity = MOUSE_OPACITY_OPAQUE + ui_x = 350 + ui_y = 185 var/strength_upper_limit = 2 - var/interface_control = 1 + var/interface_control = TRUE var/list/obj/structure/particle_accelerator/connected_parts var/assembled = FALSE var/construction_state = PA_CONSTRUCTION_UNSECURED var/active = FALSE var/strength = 0 var/powered = FALSE - mouse_opacity = MOUSE_OPACITY_OPAQUE /obj/machinery/particle_accelerator/control_box/Initialize() . = ..() @@ -75,36 +77,6 @@ else icon_state = "control_boxc" -/obj/machinery/particle_accelerator/control_box/Topic(href, href_list) - if(..()) - return - - if(!interface_control) - to_chat(usr, "ERROR: Request timed out. Check wire contacts.") - return - - if(href_list["close"]) - usr << browse(null, "window=pacontrol") - usr.unset_machine() - return - if(href_list["togglep"]) - if(!wires.is_cut(WIRE_POWER)) - toggle_power() - - else if(href_list["scan"]) - part_scan() - - else if(href_list["strengthup"]) - if(!wires.is_cut(WIRE_STRENGTH)) - add_strength() - - else if(href_list["strengthdown"]) - if(!wires.is_cut(WIRE_STRENGTH)) - remove_strength() - - updateDialog() - update_icon() - /obj/machinery/particle_accelerator/control_box/proc/strength_change() for(var/CP in connected_parts) var/obj/structure/particle_accelerator/part = CP @@ -120,7 +92,6 @@ log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]") investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) - /obj/machinery/particle_accelerator/control_box/proc/remove_strength(s) if(assembled && (strength > 0)) strength-- @@ -130,7 +101,6 @@ log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]") investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) - /obj/machinery/particle_accelerator/control_box/power_change() . = ..() if(machine_stat & NOPOWER) @@ -200,7 +170,6 @@ return TRUE return FALSE - /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO) @@ -222,44 +191,6 @@ part.update_icon() return TRUE - -/obj/machinery/particle_accelerator/control_box/ui_interact(mob/user) - . = ..() - - if(construction_state == PA_CONSTRUCTION_PANEL_OPEN) - wires.interact(user) - return - if(construction_state != PA_CONSTRUCTION_COMPLETE) - return - - if((get_dist(src, user) > 1) || (machine_stat & (BROKEN|NOPOWER))) - if(!issilicon(user)) - user.unset_machine() - user << browse(null, "window=pacontrol") - return - - var/dat = "" - dat += "Close

" - dat += "

Status

" - if(!assembled) - dat += "Unable to detect all parts!
" - dat += "Run Scan

" - else - dat += "All parts in place.

" - dat += "Power:" - if(active) - dat += "On
" - else - dat += "Off
" - dat += "Toggle Power

" - dat += "Particle Strength: [strength] " - dat += "--|++

" - - var/datum/browser/popup = new(user, "pacontrol", name, 420, 300) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) - popup.open() - /obj/machinery/particle_accelerator/control_box/examine(mob/user) . = ..() switch(construction_state) @@ -270,7 +201,6 @@ if(PA_CONSTRUCTION_PANEL_OPEN) . += "The panel is open." - /obj/machinery/particle_accelerator/control_box/attackby(obj/item/W, mob/user, params) var/did_something = FALSE @@ -328,6 +258,65 @@ if(prob(50)) qdel(src) +/obj/machinery/particle_accelerator/control_box/interact(mob/user) + if(construction_state == PA_CONSTRUCTION_PANEL_OPEN) + wires.interact(user) + else + ..() + +/obj/machinery/particle_accelerator/control_box/proc/is_interactive(mob/user) + if(!interface_control) + to_chat(user, "ERROR: Request timed out. Check wire contacts.") + return FALSE + if(construction_state != PA_CONSTRUCTION_COMPLETE) + return FALSE + return TRUE + +/obj/machinery/particle_accelerator/control_box/ui_status(mob/user) + if(is_interactive(user)) + return ..() + return UI_CLOSE + +/obj/machinery/particle_accelerator/control_box/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) + if(!ui) + ui = new(user, src, ui_key, "particle_accelerator", name, ui_x, ui_y, master_ui, state) + ui.open() + +/obj/machinery/particle_accelerator/control_box/ui_data(mob/user) + var/list/data = list() + data["assembled"] = assembled + data["power"] = active + data["strength"] = strength + return data + +/obj/machinery/particle_accelerator/control_box/ui_act(action, params) + if(..()) + return + + switch(action) + if("power") + if(wires.is_cut(WIRE_POWER)) + return + toggle_power() + . = TRUE + if("scan") + part_scan() + . = TRUE + if("add_strength") + if(wires.is_cut(WIRE_STRENGTH)) + return + add_strength() + . = TRUE + if("remove_strength") + if(wires.is_cut(WIRE_STRENGTH)) + return + remove_strength() + . = TRUE + + update_icon() + #undef PA_CONSTRUCTION_UNSECURED #undef PA_CONSTRUCTION_UNWIRED #undef PA_CONSTRUCTION_PANEL_OPEN diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 0b59011422b..61b19f6d9ff 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -27,6 +27,7 @@ var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six + var/drifting_dir = 0 // Chosen direction to drift in resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION @@ -53,6 +54,17 @@ return ..() /obj/singularity/Move(atom/newloc, direct) + var/turf/T = get_turf(src) + for(var/dir in GLOB.cardinals) + if(direct & dir) + T = get_step(T, dir) + if(!T) + break + // eat the stuff if we're going to move into it so it doesn't mess up our movement + for(var/atom/A in T.contents) + consume(A) + consume(T) + if(current_size >= STAGE_FIVE || check_turfs_in(direct)) last_failed_movement = 0//Reset this because we moved return ..() @@ -120,8 +132,13 @@ /obj/singularity/Bump(atom/A) consume(A) + if(QDELETED(A)) // don't keep moving into objects that weren't destroyed infinitely + step(src, drifting_dir) return +/obj/singularity/Crossed(atom/A) + ..() + consume(A) /obj/singularity/Bumped(atom/movable/AM) consume(AM) @@ -302,15 +319,15 @@ if(!move_self) return 0 - var/movement_dir = pick(GLOB.alldirs - last_failed_movement) + var/drifting_dir = pick(GLOB.alldirs - last_failed_movement) if(force_move) - movement_dir = force_move + drifting_dir = force_move if(target && prob(60)) - movement_dir = get_dir(src,target) //moves to a singulo beacon, if there is one + drifting_dir = get_dir(src,target) //moves to a singulo beacon, if there is one - step(src, movement_dir) + step(src, drifting_dir) /obj/singularity/proc/check_cardinals_range(steps, retry_with_move = FALSE) . = length(GLOB.cardinals) //Should be 4. diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 0ef53491aae..e2c6745d71c 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -140,7 +140,7 @@ return if(!terminal) C.use(10) - user.visible_message("[user.name] has built a power terminal.",\ + user.visible_message("[user.name] builds a power terminal.",\ "You build the power terminal.") //build the terminal and link it to the network @@ -364,11 +364,7 @@ if("input") var/target = params["target"] var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New input target (0-[input_level_max]):", name, input_level) as num|null - if(!isnull(target) && !..()) - . = TRUE - else if(target == "min") + if(target == "min") target = 0 . = TRUE else if(target == "max") @@ -386,11 +382,7 @@ if("output") var/target = params["target"] var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New output target (0-[output_level_max]):", name, output_level) as num|null - if(!isnull(target) && !..()) - . = TRUE - else if(target == "min") + if(target == "min") target = 0 . = TRUE else if(target == "max") diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 08c99bec480..eea89b3623b 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -2,6 +2,16 @@ //Please do not bother them with bugs from this port, however, as it has been modified quite a bit. //Modifications include removing the world-ending full supermatter variation, and leaving only the shard. +//Zap constants, speeds up targeting + +#define BIKE (COIL + 1) +#define COIL (ROD + 1) +#define ROD (LIVING + 1) +#define LIVING (MACHINERY + 1) +#define MACHINERY (OBJECT + 1) +#define OBJECT (LOWEST + 1) +#define LOWEST (1) + #define PLASMA_HEAT_PENALTY 15 // Higher == Bigger heat and waste penalty from having the crystal surrounded by this gas. Negative numbers reduce penalty. #define OXYGEN_HEAT_PENALTY 1 #define PLUOXIUM_HEAT_PENALTY -1 @@ -9,6 +19,7 @@ #define CO2_HEAT_PENALTY 0.1 #define NITROGEN_HEAT_PENALTY -1.5 #define BZ_HEAT_PENALTY 5 +#define FREON_HEAT_PENALTY -10 //very good heat absorbtion and less plasma and o2 generation //All of these get divided by 10-bzcomp * 5 before having 1 added and being multiplied with power to determine rads @@ -73,6 +84,10 @@ ///to prevent accent sounds from layering #define SUPERMATTER_ACCENT_SOUND_MIN_COOLDOWN 2 SECONDS +#define DEFAULT_ZAP_ICON_STATE "sm_arc" +#define SLIGHTLY_CHARGED_ZAP_ICON_STATE "sm_arc_supercharged" +#define OVER_9000_ZAP_ICON_STATE "sm_arc_dbz_referance" //Witty I know + GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) /obj/machinery/power/supermatter_crystal @@ -83,6 +98,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) density = TRUE anchored = TRUE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 + var/zap_icon = DEFAULT_ZAP_ICON_STATE var/uid = 1 var/static/gl_uid = 1 light_range = 4 @@ -125,8 +141,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/tritiumcomp = 0 var/bzcomp = 0 var/pluoxiumcomp = 0 + var/freoncomp = 0 var/pluoxiumbonus = 0 + var/freonbonus = 1 //it allows us to remove the power generation while freon is inside the chamber var/combined_gas = 0 var/gasmix_power_ratio = 0 @@ -303,19 +321,21 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(combined_gas > MOLE_PENALTY_THRESHOLD) investigate_log("has collapsed into a singularity.", INVESTIGATE_SUPERMATTER) SSredbot.send_discord_message("admin","The supermatter has collapsed into a singularity.","round ending event") - if(T) + if(T) //If something fucks up we blow anyhow. This fix is 4 years old and none ever said why it's here. help. var/obj/singularity/S = new(T) S.energy = 800 S.consume(src) - else - investigate_log("has exploded.", INVESTIGATE_SUPERMATTER) - SSredbot.send_discord_message("admin","The supermatter has exploded.","round ending event") - explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1) - if(power > POWER_PENALTY_THRESHOLD) - investigate_log("has spawned additional energy balls.", INVESTIGATE_SUPERMATTER) + return //No boom for me sir + else if(power > POWER_PENALTY_THRESHOLD) + investigate_log("has spawned additional energy balls.", INVESTIGATE_SUPERMATTER) + if(T) var/obj/singularity/energy_ball/E = new(T) E.energy = power - qdel(src) + SSredbot.send_discord_message("admin","The supermatter has exploded.","round ending event") + investigate_log("has exploded.", INVESTIGATE_SUPERMATTER) + explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1) + qdel(src) + //this is here to eat arguments /obj/machinery/power/supermatter_crystal/proc/call_explode() @@ -395,7 +415,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //This means we can only deal 1.8 damage per function call damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage) - removed.assert_gases(/datum/gas/oxygen, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/nitrogen, /datum/gas/pluoxium, /datum/gas/tritium, /datum/gas/bz) + removed.assert_gases(/datum/gas/oxygen, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/nitrogen, /datum/gas/pluoxium, /datum/gas/tritium, /datum/gas/bz, /datum/gas/freon) //calculating gas related values //Wanna know a secret? See that max() to zero? it's used for error checking. If we get a mol count in the negative, we'll get a divide by zero error combined_gas = max(removed.total_moles(), 0) @@ -415,6 +435,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) bzcomp += clamp(max(removed.gases[/datum/gas/bz][MOLES]/combined_gas, 0) - bzcomp, -1, gas_change_rate) n2ocomp += clamp(max(removed.gases[/datum/gas/nitrous_oxide][MOLES]/combined_gas, 0) - n2ocomp, -1, gas_change_rate) n2comp += clamp(max(removed.gases[/datum/gas/nitrogen][MOLES]/combined_gas, 0) - n2comp, -1, gas_change_rate) + freoncomp += clamp(max(removed.gases[/datum/gas/freon][MOLES]/combined_gas, 0) - freoncomp, -1, gas_change_rate) //We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount. if(pluoxiumcomp >= 0.15) @@ -422,14 +443,31 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) else pluoxiumbonus = 0 + if(freoncomp <= 0.03) + freonbonus = 1 + else + freonbonus = 0 //stop any power generation by removing radiation output + //No less then zero, and no greater then one, we use this to do explosions and heat to power transfer - gasmix_power_ratio = min(max(plasmacomp + o2comp + co2comp + tritiumcomp + bzcomp - pluoxiumcomp - n2comp, 0), 1) + gasmix_power_ratio = min(max(plasmacomp + o2comp + co2comp + tritiumcomp + bzcomp - pluoxiumcomp - n2comp - freoncomp, 0), 1) //Minimum value of 1.5, maximum value of 15 - dynamic_heat_modifier = max((plasmacomp * PLASMA_HEAT_PENALTY) + (o2comp * OXYGEN_HEAT_PENALTY) + (co2comp * CO2_HEAT_PENALTY) + (tritiumcomp * TRITIUM_HEAT_PENALTY) + ((pluoxiumcomp * PLUOXIUM_HEAT_PENALTY) * pluoxiumbonus) + (n2comp * NITROGEN_HEAT_PENALTY) + (bzcomp * BZ_HEAT_PENALTY), 0.5) + dynamic_heat_modifier = plasmacomp * PLASMA_HEAT_PENALTY + dynamic_heat_modifier += o2comp * OXYGEN_HEAT_PENALTY + dynamic_heat_modifier += co2comp * CO2_HEAT_PENALTY + dynamic_heat_modifier += tritiumcomp * TRITIUM_HEAT_PENALTY + dynamic_heat_modifier += (pluoxiumcomp * PLUOXIUM_HEAT_PENALTY) * pluoxiumbonus + dynamic_heat_modifier += n2comp * NITROGEN_HEAT_PENALTY + dynamic_heat_modifier += bzcomp * BZ_HEAT_PENALTY + dynamic_heat_modifier += freoncomp * FREON_HEAT_PENALTY + dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5) //Value between 6 and 1 dynamic_heat_resistance = max((n2ocomp * N2O_HEAT_RESISTANCE) + ((pluoxiumcomp * PLUOXIUM_HEAT_RESISTANCE) * pluoxiumbonus), 1) //Value between 30 and -5, used to determine radiation output as it concerns things like collecters - power_transmission_bonus = (plasmacomp * gas_trans["PL"]) + (o2comp * gas_trans["O2"]) + (bzcomp * gas_trans["BZ"]) + (tritiumcomp * gas_trans["TRIT"]) + ((pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus) + power_transmission_bonus = plasmacomp * gas_trans["PL"] + power_transmission_bonus += o2comp * gas_trans["O2"] + power_transmission_bonus += bzcomp * gas_trans["BZ"] + power_transmission_bonus += tritiumcomp * gas_trans["TRIT"] + power_transmission_bonus += (pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus //more moles of gases are harder to heat than fewer, so let's scale heat damage around them mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25) @@ -468,8 +506,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) power = max((removed.temperature * temp_factor / T0C) * gasmix_power_ratio + power, 0) if(prob(50)) - //1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads)) - radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(bzcomp * BZ_RADIOACTIVITY_MODIFIER))))))// RadModBZ(500%) + //(1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads))) * freonbonus + radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(bzcomp * BZ_RADIOACTIVITY_MODIFIER)))) * freonbonus))// RadModBZ(500%) if(bzcomp >= 0.4 && prob(30 * bzcomp)) src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick @@ -516,24 +554,41 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //This wraps around to the begining of the function //Handle high power zaps/anomaly generation if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point) //If the power is above 5000 or if the damage is above 550 - if(removed && removed.temperature) - zap_cutoff = clamp(3000 - (power * (env.total_moles()) / 10) / env.return_temperature(), 350, 3000)//If the core is cold, it's easier to jump, ditto if there are a lot of mols - else - zap_cutoff = 1500 - //We should always be able to zap our way out of the default enclosure - //See supermatter_zap() for more details - var/range = clamp(power / env.return_pressure() * 10, 2, 8) - if(power > POWER_PENALTY_THRESHOLD) - playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) - supermatter_zap(src, range, min(power*2, 20000)) - supermatter_zap(src, range, min(power*2, 20000)) - if(power > SEVERE_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, range, min(power*2, 20000)) - if(power > CRITICAL_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, range, min(power*2, 20000)) - else if (damage > damage_penalty_point && prob(20)) + var/range = 4 + zap_cutoff = 1500 + if(removed && removed.return_pressure() > 0 && removed.return_temperature() > 0) + //You may be able to freeze the zapstate of the engine with good planning, we'll see + zap_cutoff = clamp(3000 - (power * (removed.total_moles()) / 10) / removed.return_temperature(), 350, 3000)//If the core is cold, it's easier to jump, ditto if there are a lot of mols + //We should always be able to zap our way out of the default enclosure + //See supermatter_zap() for more details + range = clamp(power / removed.return_pressure() * 10, 2, 7) + var/flags = ZAP_SUPERMATTER_FLAGS + var/zap_count = 0 + //Deal with power zaps + switch(power) + if(POWER_PENALTY_THRESHOLD to SEVERE_POWER_PENALTY_THRESHOLD) + zap_icon = DEFAULT_ZAP_ICON_STATE + zap_count = 2 + if(SEVERE_POWER_PENALTY_THRESHOLD to CRITICAL_POWER_PENALTY_THRESHOLD) + zap_icon = SLIGHTLY_CHARGED_ZAP_ICON_STATE + //Uncaps the zap damage, it's maxed by the input power + //Objects take damage now + flags |= (ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE) + zap_count = 3 + if(CRITICAL_POWER_PENALTY_THRESHOLD to INFINITY) + zap_icon = OVER_9000_ZAP_ICON_STATE + //It'll stun more now, and damage will hit harder, gloves are no garentee. + //Machines go boom + flags |= (ZAP_MOB_STUN | ZAP_MACHINE_EXPLOSIVE | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE) + zap_count = 4 + //Now we deal with damage shit + if (damage > damage_penalty_point && prob(20)) + zap_count += 1 + + if(zap_count >= 1) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) - supermatter_zap(src, range, clamp(power*2, 4000, 20000)) + for(var/i in 1 to zap_count) + supermatter_zap(src, range, clamp(power*2, 4000, 20000), list(), flags) if(prob(15) && power > POWER_PENALTY_THRESHOLD) supermatter_pull(src, power/750) @@ -859,98 +914,158 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(PYRO_ANOMALY) new /obj/effect/anomaly/pyro(L, 200) -/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart, range = 5, zap_str, list/targets_hit = list()) +/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart = src, range = 5, zap_str = 4000, list/targets_hit = list(), zap_flags = ZAP_SUPERMATTER_FLAGS) + if(QDELETED(zapstart)) + return . = zapstart.dir //If the strength of the zap decays past the cutoff, we stop if(zap_str < zap_cutoff) return - var/target + var/datum/target + var/target_type = (LOWEST) var/list/arctargets = list() //Making a new copy so additons further down the recursion do not mess with other arcs - var/list/targets_copy = targets_hit.Copy() //Lets put this ourself into the do not hit list, so we don't curve back to hit the same thing twice with one arc - targets_copy += zapstart - - for(var/obj/vehicle/ridden/bicycle/bike in oview(zapstart, range)) - if(!(bike in targets_copy) && !(bike.obj_flags & BEING_SHOCKED) && bike.can_buckle)//God's not on our side cause he hates idiots. - arctargets += bike - - if(!arctargets.len) - for(var/obj/machinery/power/tesla_coil/coil in oview(zapstart, range)) - if(!(coil in targets_copy) && coil.anchored && !(coil.obj_flags & BEING_SHOCKED) && !coil.panel_open && prob(70))//Diversity of death - arctargets += coil - - if(!arctargets.len) - for(var/obj/machinery/power/grounding_rod/rod in oview(zapstart, range)) - //2 rods are safer then one, intended to keep the bolts dangourus - //If the sm puts out 2 bolts every half second, then a rod gets ignored every 5 seconds or so. - if(rod.anchored && !rod.panel_open && prob(90)) - arctargets += rod - - if(!arctargets.len) - for(var/mob/living/Z in oview(zapstart, range)) - if(!(Z in targets_copy) && !(HAS_TRAIT(Z, TRAIT_TESLA_SHOCKIMMUNE)) && !(Z.flags_1 & SHOCKED_1) && Z.stat != DEAD && prob(20))//let's not hit all the engineers with every beam and/or segment of the arc - arctargets += Z - - if(!arctargets.len) - for(var/obj/machinery/X in oview(zapstart, range)) - if(!(X in targets_copy) && !(X.obj_flags & BEING_SHOCKED) && prob(40)) - arctargets += X - - if(!arctargets.len) - for(var/obj/Y in oview(zapstart, range)) - if(!(Y in targets_copy) && !(Y.obj_flags & BEING_SHOCKED)) - arctargets += Y + for(var/test in oview(zapstart, range)) + if(!(zap_flags & ZAP_ALLOW_DUPLICATES) && LAZYACCESS(targets_hit, test)) + continue + + if(istype(test, /obj/vehicle/ridden/bicycle/)) + var/obj/vehicle/ridden/bicycle/bike = test + if(!(bike.obj_flags & BEING_SHOCKED) && bike.can_buckle)//God's not on our side cause he hates idiots. + if(target_type != BIKE) + arctargets = list() + arctargets += test + target_type = BIKE + + if(target_type > COIL) + continue + + if(istype(test, /obj/machinery/power/tesla_coil/)) + var/obj/machinery/power/tesla_coil/coil = test + if(coil.anchored && !(coil.obj_flags & BEING_SHOCKED) && !coil.panel_open && prob(70))//Diversity of death + if(target_type != COIL) + arctargets = list() + arctargets += test + target_type = COIL + + if(target_type > ROD) + continue + + if(istype(test, /obj/machinery/power/grounding_rod/)) + var/obj/machinery/power/grounding_rod/rod = test + //We're adding machine damaging effects, rods need to be surefire + if(rod.anchored && !rod.panel_open) + if(target_type != ROD) + arctargets = list() + arctargets += test + target_type = ROD + + if(target_type > LIVING) + continue + + if(istype(test, /mob/living/)) + var/mob/living/alive = test + if(!(HAS_TRAIT(alive, TRAIT_TESLA_SHOCKIMMUNE)) && !(alive.flags_1 & SHOCKED_1) && alive.stat != DEAD && prob(20))//let's not hit all the engineers with every beam and/or segment of the arc + if(target_type != LIVING) + arctargets = list() + arctargets += test + target_type = LIVING + + if(target_type > MACHINERY) + continue + + if(istype(test, /obj/machinery/)) + var/obj/machinery/machine = test + if(!(machine.obj_flags & BEING_SHOCKED) && prob(40)) + if(target_type != MACHINERY) + arctargets = list() + arctargets += test + target_type = MACHINERY + + if(target_type > OBJECT) + continue + + if(istype(test, /obj/)) + var/obj/object = test + if(!(object.obj_flags & BEING_SHOCKED)) + if(target_type != OBJECT) + arctargets = list() + arctargets += test + target_type = OBJECT if(arctargets.len)//Pick from our pool target = pick(arctargets) - if(target)//If we found something + if(!QDELETED(target))//If we found something //Do the animation to zap to it from here - zapstart.Beam(target, icon_state="sm_arc", time=5) + if(!(zap_flags & ZAP_ALLOW_DUPLICATES)) + LAZYSET(targets_hit, target, TRUE) + zapstart.Beam(target, icon_state=zap_icon, time=5) var/zapdir = get_dir(zapstart, target) if(zapdir) . = zapdir + //Going boom should be rareish + if(prob(80)) + zap_flags &= ~ZAP_MACHINE_EXPLOSIVE if(istype(target, /obj/machinery/power/tesla_coil)) var/obj/machinery/power/tesla_coil/coil = target - //In the best situation we can expect this to grow up to 540kw before a delam/IT'S GONE TOO FAR FRED SHUT IT DOWN - //The formula for power gen is zap_str * 15 / 2 * capacitor rating, between 1 and 4 - coil.zap_act(zap_str * 15, ZAP_SUPERMATTER_FLAGS, list()) //Coils should take a lot out of the power of the zap - zap_str /= 3 + //In the best situation we can expect this to grow up to 2120kw before a delam/IT'S GONE TOO FAR FRED SHUT IT DOWN + //The formula for power gen is zap_str * zap_mod / 2 * capacitor rating, between 1 and 4 + var/multi = 10 + switch(power)//Between 7k and 9k it's 20, above that it's 40 + if(SEVERE_POWER_PENALTY_THRESHOLD to CRITICAL_POWER_PENALTY_THRESHOLD) + multi = 20 + if(CRITICAL_POWER_PENALTY_THRESHOLD to INFINITY) + multi = 40 + coil.zap_act(zap_str * multi, zap_flags, list()) + zap_str /= 3 //Coils should take a lot out of the power of the zap else if(istype(target, /obj/machinery/power/grounding_rod)) var/obj/machinery/power/grounding_rod/rod = target //We can expect this to do very little, maybe shock the poor soul buckled to it, but that's all. //This is one of our endpoints, if the bolt hits a grounding rod, it stops jumping - rod.zap_act(zap_str, ZAP_SUPERMATTER_FLAGS, list()) + rod.zap_act(zap_str, zap_flags, list()) return else if(isliving(target))//If we got a fleshbag on our hands var/mob/living/mob = target mob.set_shocked() addtimer(CALLBACK(mob, /mob/living/proc/reset_shocked), 10) - mob.electrocute_act(rand(5,10), "Supermatter Discharge Bolt", 1, SHOCK_NOSTUN) + //3 shots a human with no resistance. 2 to crit, one to death. This is at at least 10000 power. + //There's no increase after that because the input power is effectivly capped at 10k + //Does 1.5 damage at the least + var/shock_damage = ((zap_flags & ZAP_MOB_DAMAGE) ? (power / 200) - 10 : rand(5,10)) + mob.electrocute_act(shock_damage, "Supermatter Discharge Bolt", 1, ((zap_flags & ZAP_MOB_STUN) ? SHOCK_TESLA : SHOCK_NOSTUN)) zap_str /= 1.5 //Meatsacks are conductive, makes working in pairs more destructive else if(isobj(target)) var/obj/junk = target - junk.zap_act(zap_str, ZAP_SUPERMATTER_FLAGS, list()) - zap_str /= 1.8 // worse then living things, better then coils - //Then we finish it all up + junk.zap_act(zap_str, zap_flags, list()) + zap_str /= 2 // worse then living things, better then coils + else + zap_str = 0 //This gotdamn variable is a boomer and keeps giving me problems var/turf/T = get_turf(target) var/pressure = max(1,T.return_air().return_pressure()) //We get our range with the strength of the zap and the pressure, the lower the former and the higher the latter the better var/new_range = clamp(zap_str / pressure * 10, 2, 7) + var/zap_count = 1 if(prob(5)) - zap_str = zap_str - (zap_str/10) - supermatter_zap(target, new_range, zap_str, targets_copy) - supermatter_zap(target, new_range, zap_str, targets_copy) - else - supermatter_zap(target, new_range, zap_str, targets_copy) + zap_str -= (zap_str/10) + zap_count += 1 + for(var/j in 1 to zap_count) + supermatter_zap(target, new_range, zap_str, targets_hit, zap_flags) #undef HALLUCINATION_RANGE #undef GRAVITATIONAL_ANOMALY #undef FLUX_ANOMALY #undef PYRO_ANOMALY +#undef BIKE +#undef COIL +#undef ROD +#undef LIVING +#undef MACHINERY +#undef OBJECT +#undef LOWEST diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index a1c11b9dca0..0077193b250 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -7,16 +7,14 @@ name = "terminal" icon_state = "term" desc = "It's an underfloor wiring terminal for power equipment." - level = 1 layer = WIRE_TERMINAL_LAYER //a bit above wires var/obj/machinery/power/master = null /obj/machinery/power/terminal/Initialize() . = ..() - var/turf/T = get_turf(src) - if(level == 1) - hide(T.intact) + + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, use_alpha = TRUE) /obj/machinery/power/terminal/Destroy() if(master) @@ -27,15 +25,6 @@ /obj/machinery/power/terminal/should_have_node() return TRUE -/obj/machinery/power/terminal/hide(i) - if(i) - invisibility = INVISIBILITY_MAXIMUM - icon_state = "term-f" - else - invisibility = 0 - icon_state = "term" - - /obj/machinery/power/proc/can_terminal_dismantle() . = FALSE diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 38bf49f64e0..cdac6681c3c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -433,8 +433,8 @@ if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, volume = 50)) if(!pin) //check to see if the pin is still there, or we can spam messages by clicking multiple times during the tool delay return - user.visible_message("[pin] was pried out of [src] by [user], destroying the pin in the process.", - "You pried [pin] out with [I], destroying the pin in the process.", null, 3) + user.visible_message("[pin] is pried out of [src] by [user], destroying the pin in the process.", + "You pry [pin] out with [I], destroying the pin in the process.", null, 3) QDEL_NULL(pin) return TRUE WaspStation End */ @@ -452,8 +452,8 @@ if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, 5, volume = 50)) if(!pin) //check to see if the pin is still there, or we can spam messages by clicking multiple times during the tool delay return - user.visible_message("[pin] was spliced out of [src] by [user], melting part of the pin in the process.", - "You spliced [pin] out of [src] with [I], melting part of the pin in the process.", null, 3) + user.visible_message("[pin] is spliced out of [src] by [user], melting part of the pin in the process.", + "You splice [pin] out of [src] with [I], melting part of the pin in the process.", null, 3) QDEL_NULL(pin) return TRUE @@ -469,8 +469,8 @@ if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, volume = 50)) if(!pin) //check to see if the pin is still there, or we can spam messages by clicking multiple times during the tool delay return - user.visible_message("[pin] was ripped out of [src] by [user], mangling the pin in the process.", - "You ripped [pin] out of [src] with [I], mangling the pin in the process.", null, 3) + user.visible_message("[pin] is ripped out of [src] by [user], mangling the pin in the process.", + "You rip [pin] out of [src] with [I], mangling the pin in the process.", null, 3) QDEL_NULL(pin) return TRUE diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index b4faa98acff..5dafc6be413 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -133,15 +133,14 @@ usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') tool_behaviour = TOOL_WELDER toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders - internal_cell = TRUE //so you don't cheese through the need for plasma - var/progress_flash_divisor = 10 //copypasta is best pasta - var/light_intensity = 1 + internal_cell = TRUE //so you don't cheese through the need for plasma - WASP EDIT var/charge_weld = 25 //amount of charge used up to start action (multiplied by amount) and per progress_flash_divisor ticks of welding /obj/item/gun/energy/plasmacutter/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg') AddElement(/datum/element/update_icon_blocker) + AddElement(/datum/element/tool_flash, 1) /obj/item/gun/energy/plasmacutter/examine(mob/user) . = ..() @@ -164,13 +163,6 @@ else ..() -// Tool procs, in case plasma cutter is used as welder -// Can we start welding? -/obj/item/gun/energy/plasmacutter/tool_start_check(mob/living/user, amount) - . = tool_use_check(user, amount) - if(. && user) - user.flash_act(light_intensity) - // Can we weld? Plasma cutter does not use charge continuously. // Amount cannot be defaulted to 1: most of the code specifies 0 in the call. /obj/item/gun/energy/plasmacutter/tool_use_check(mob/living/user, amount) @@ -189,17 +181,6 @@ /obj/item/gun/energy/plasmacutter/use(amount) return (!QDELETED(cell) && cell.use(amount ? amount * charge_weld : charge_weld)) -// This only gets called by use_tool(delay > 0) -// It's also supposed to not get overridden in the first place. -/obj/item/gun/energy/plasmacutter/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - . = ..() //return tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) - if(. && user) - if (progress_flash_divisor == 0) - user.flash_act(min(light_intensity,1)) - progress_flash_divisor = initial(progress_flash_divisor) - else - progress_flash_divisor-- - /obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) if(amount) . = ..() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 7b8e2c79dfb..5f005dee928 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -1,6 +1,6 @@ /obj/item/gun/magic/wand - name = "wand of nothing" - desc = "It's not just a stick, it's a MAGIC stick! You shouldn't have this." + name = "wand" + desc = "You shouldn't have this." ammo_type = /obj/item/ammo_casing/magic icon_state = "nothingwand" item_state = "wand" @@ -233,6 +233,7 @@ ///////////////////////////////////// /obj/item/gun/magic/wand/nothing + name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick?" ammo_type = /obj/item/ammo_casing/magic/nothing diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 46e44d5a6cf..9a557d7f90a 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -447,8 +447,6 @@ new /obj/effect/hotspot(T) for(var/obj/O in range(aoe_structure_range, epicenter)) if(!isitem(O)) - if(O.level == 1) //Please don't break underfloor items! - continue O.take_damage(aoe_structure_damage * get_damage_coeff(O), BURN, "laser", FALSE) /obj/projectile/beam/beam_rifle/proc/check_pierce(atom/target) diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index bb367a92373..b56051d990e 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -19,8 +19,8 @@ return BULLET_ACT_HIT else blocked = 100 - target.visible_message("\The [src] was deflected!", \ - "You were protected against \the [src]!") + target.visible_message("\The [src] is deflected!", \ + "You are protected against \the [src]!") ..(target, blocked) reagents.flags &= ~(NO_REACT) diff --git a/code/modules/projectiles/projectile/bullets/dnainjector.dm b/code/modules/projectiles/projectile/bullets/dnainjector.dm index 2cae1c2b321..c4a46f237fa 100644 --- a/code/modules/projectiles/projectile/bullets/dnainjector.dm +++ b/code/modules/projectiles/projectile/bullets/dnainjector.dm @@ -15,8 +15,8 @@ return BULLET_ACT_HIT else blocked = 100 - target.visible_message("\The [src] was deflected!", \ - "You were protected against \the [src]!") + target.visible_message("\The [src] is deflected!", \ + "You are protected against \the [src]!") return ..() /obj/projectile/bullet/dnainjector/Destroy() diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index b858365445b..0bce20a3d23 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -2,24 +2,20 @@ name = "tesla bolt" icon_state = "tesla_projectile" impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser - var/chain + damage = 10 //A worse lasergun var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE var/zap_range = 3 var/power = 10000 -/obj/projectile/energy/tesla/fire(setAngle) - if(firer) - chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY) - ..() - /obj/projectile/energy/tesla/on_hit(atom/target) . = ..() - tesla_zap(target, zap_range, power, zap_flags) + tesla_zap(src, zap_range, power, zap_flags) qdel(src) -/obj/projectile/energy/tesla/Destroy() - QDEL_NULL(chain) - return ..() +/obj/projectile/energy/tesla/process() + . = ..() + //Many coders have given their blood for this speed + tesla_zap(src, zap_range, power, zap_flags) /obj/projectile/energy/tesla/revolver name = "energy orb" @@ -27,3 +23,4 @@ /obj/projectile/energy/tesla/cannon name = "tesla orb" power = 20000 + damage = 15 //Mech man big diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 58c3ad9aadf..183c002944f 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -1,5 +1,5 @@ /obj/projectile/magic - name = "bolt of nothing" + name = "bolt" icon_state = "energy" damage = 0 damage_type = OXY diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 20a7f7e3781..07f2a81873b 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -337,7 +337,6 @@ replace_beaker(user, B) to_chat(user, "You add [B] to [src].") updateUsrDialog() - update_icon() else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/card/emag)) to_chat(user, "You can't load [I] into [src]!") return ..() diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 408d79e2323..ed655bd31f0 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -124,14 +124,7 @@ . = TRUE if("temperature") var/target = params["target"] - var/adjust = text2num(params["adjust"]) - if(target == "input") - target = input("New target temperature:", name, target_temperature) as num|null - if(!isnull(target) && !..()) - . = TRUE - else if(adjust) - target = target_temperature + adjust - else if(text2num(target) != null) + if(text2num(target) != null) target = text2num(target) . = TRUE if(.) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 8acd7ea7394..9a0a31fb1d7 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -210,7 +210,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-40) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE)) M.Jitter(5) return ..() @@ -646,7 +646,7 @@ All effects don't start immediately, but rather get worse over time; the rate is shot_glass_icon_state = "toxinsspecialglass" /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M) - M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/beepsky_smash @@ -717,7 +717,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manly_dorf/on_mob_metabolize(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.dna.check_mutation(DWARFISM) || HAS_TRAIT(H, TRAIT_ALCOHOL_TOLERANCE)) + if(HAS_TRAIT(H, TRAIT_DWARF) || HAS_TRAIT(H, TRAIT_ALCOHOL_TOLERANCE)) to_chat(H, "Now THAT is MANLY!") boozepwr = 5 //We've had worse in the mines dorf_mode = TRUE @@ -850,7 +850,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The ultimate refreshment." /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/barefoot @@ -1673,7 +1673,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M) M.apply_status_effect(/datum/status_effect/throat_soothed) - M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) ..() /datum/reagent/consumable/ethanol/alexander @@ -2137,7 +2137,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "boozy Catholicism in a glass." /datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M) - if(M.mind.isholy) + if(M.mind.holy_role) M.adjustFireLoss(-2.5, 0) M.jitteriness = max(0, M.jitteriness-1) M.stuttering = max(0, M.stuttering-1) @@ -2216,3 +2216,18 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "pina_colada" glass_name = "Pina Colada" glass_desc = "If you like pina coladas, and getting caught in the rain... well, you'll like this drink." + + +/datum/reagent/consumable/ethanol/pruno // pruno mix is in drink_reagents + name = "pruno" + color = "#E78108" + description = "Fermented prison wine made from fruit, sugar, and despair. Security loves to confiscate this, which is the only kind thing Security has ever done." + boozepwr = 85 + taste_description = "your tastebuds being individually shanked" + glass_icon_state = "glass_orange" + glass_name = "glass of pruno" + glass_desc = "Fermented prison wine made from fruit, sugar, and despair. Security loves to confiscate this, which is the only kind thing Security has ever done." + +/datum/reagent/consumable/ethanol/pruno/on_mob_life(mob/living/carbon/M) + M.adjust_disgust(5) + ..() diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 3db00f676f1..c4f8042a16d 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -147,17 +147,19 @@ WaspStation End */ var/spammer = 0 /datum/reagent/medicine/C2/lenturi/on_mob_life(mob/living/carbon/M) - M.adjustFireLoss(-3 * REM) - M.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.4 * REM) - ..() - return TRUE + M.adjustFireLoss(-3 * REM) + M.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.4 * REM) + ..() + return TRUE + /datum/reagent/medicine/C2/lenturi/on_mob_metabolize(mob/living/carbon/M) - M.add_movespeed_modifier(MOVESPEED_ID_LENTURI, update=TRUE, priority=100, multiplicative_slowdown=1.50, blacklisted_movetypes=(FLYING|FLOATING)) - . = ..() + M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/lenturi) + return ..() + /datum/reagent/medicine/C2/lenturi/on_mob_end_metabolize(mob/living/carbon/M) - M.remove_movespeed_modifier(MOVESPEED_ID_LENTURI) + M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/lenturi) + return ..() - . = ..() /datum/reagent/medicine/C2/aiuri name = "Aiuri" description = "Used to treat burns. Does minor eye damage." @@ -415,26 +417,25 @@ WaspStation End*/ /*Suffix: Combo of healing, prob gonna get wack REAL fast*/ /datum/reagent/medicine/C2/instabitaluri name = "Synthflesh (Instabitaluri)" - description = "Has a 100% chance of instantly healing brute and burn damage at the cost of toxicity (75% of damage healed). Touch application only." + description = "Heals brute and burn damage at the cost of toxicity (66% of damage healed). Touch application only." reagent_state = LIQUID color = "#FFEBEB" /datum/reagent/medicine/C2/instabitaluri/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) - var/mob/living/carbon/Carbies = M - if (Carbies.stat == DEAD) + var/mob/living/carbon/carbies = M + if (carbies.stat == DEAD) show_message = 0 if(method in list(PATCH, TOUCH)) - var/harmies = min(Carbies.getBruteLoss(),Carbies.adjustBruteLoss(-1.25 * reac_volume)*-1) - var/burnies = min(Carbies.getFireLoss(),Carbies.adjustFireLoss(-1.25 * reac_volume)*-1) - Carbies.adjustToxLoss((harmies+burnies)*0.66) + var/harmies = min(carbies.getBruteLoss(),carbies.adjustBruteLoss(-1.25 * reac_volume)*-1) + var/burnies = min(carbies.getFireLoss(),carbies.adjustFireLoss(-1.25 * reac_volume)*-1) + carbies.adjustToxLoss((harmies+burnies)*0.66) if(show_message) - to_chat(Carbies, "You feel your burns and bruises healing! It stings like hell!") - SEND_SIGNAL(Carbies, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) - //Has to be at less than TRESHOLD_UNHUSK burn damage and have 100 isntabitaluri before unhusking. Corpses dont metabolize. - if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && Carbies.getFireLoss() < TRESHOLD_UNHUSK && Carbies.reagents.has_reagent(/datum/reagent/medicine/C2/instabitaluri, 100)) - Carbies.cure_husk("burn") - Carbies.visible_message("With most of the burnt off flesh replaced, [Carbies] looks a lot healthier.") + to_chat(carbies, "You feel your burns and bruises healing! It stings like hell!") + SEND_SIGNAL(carbies, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && carbies.getFireLoss() < THRESHOLD_UNHUSK && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/C2/instabitaluri) + reac_volume >= 100)) + carbies.cure_husk("burn") + carbies.visible_message("A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something ..() return TRUE diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index a2d7696566d..ddbb9555af2 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -257,7 +257,7 @@ M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) //310.15 is the normal bodytemp. - M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) if(holder.has_reagent(/datum/reagent/consumable/frostoil)) holder.remove_reagent(/datum/reagent/consumable/frostoil, 5) ..() @@ -280,7 +280,7 @@ M.AdjustSleeping(-20, FALSE) if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1, 0) - M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) ..() . = 1 @@ -325,7 +325,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) M.Jitter(5) ..() . = 1 @@ -346,7 +346,7 @@ M.AdjustSleeping(-40, FALSE) if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1, 0) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() . = 1 @@ -361,7 +361,7 @@ /datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-5) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/nuka_cola @@ -376,10 +376,10 @@ /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.35, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola) /datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola) ..() /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) @@ -388,7 +388,7 @@ M.dizziness +=1.5 M.drowsyness = 0 M.AdjustSleeping(-40, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() . = 1 @@ -415,7 +415,7 @@ M.dizziness +=1 M.drowsyness = 0 M.AdjustSleeping(-40, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/spacemountainwind @@ -430,7 +430,7 @@ /datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-20, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) M.Jitter(5) ..() . = 1 @@ -446,7 +446,7 @@ /datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-6) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/space_up @@ -460,7 +460,7 @@ /datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/lemon_lime @@ -474,7 +474,7 @@ /datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() @@ -487,8 +487,17 @@ glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." +/datum/reagent/consumable/pwr_game/reaction_mob(mob/living/C, method=TOUCH, reac_volume) + ..() + if(C?.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && method==INGEST && !HAS_TRAIT(C, TRAIT_GAMERGOD)) + ADD_TRAIT(C, TRAIT_GAMERGOD, "pwr_game") + to_chat(C, "As you imbibe the Pwr Game, your gamer third eye opens... \ + You feel as though a great secret of the universe has been made known to you...") + /datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + if(prob(10)) + M?.mind.adjust_experience(/datum/skill/gaming, 5) ..() /datum/reagent/consumable/shamblers @@ -501,7 +510,7 @@ glass_desc = "Mmm mm, shambly." /datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/sodawater name = "Soda Water" @@ -515,7 +524,7 @@ /datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/tonic @@ -531,7 +540,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() . = 1 @@ -550,23 +559,22 @@ M.dizziness +=1 M.drowsyness = 0 M.AdjustSleeping(-40, FALSE) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/monkey_energy/on_mob_metabolize(mob/living/L) ..() if(ismonkey(L)) - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.35, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/monkey_energy) /datum/reagent/consumable/monkey_energy/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/monkey_energy) ..() /datum/reagent/consumable/monkey_energy/overdose_process(mob/living/M) if(prob(15)) M.say(pick_list_replacements(BOOMER_FILE, "boomer"), forced = /datum/reagent/consumable/monkey_energy) ..() - return /datum/reagent/consumable/ice name = "Ice" @@ -579,7 +587,7 @@ glass_desc = "Generally, you're supposed to put something else in there too..." /datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/soy_latte @@ -596,7 +604,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0, FALSE) - M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) @@ -617,7 +625,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0, FALSE) - M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) @@ -742,7 +750,7 @@ glass_desc = "It's grape (soda)!" /datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/milk/chocolate_milk @@ -763,7 +771,7 @@ glass_desc = "A favorite winter drink to warm you up." /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) ..() /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M) @@ -828,7 +836,7 @@ glass_desc = "A classic space-American vanilla flavored soft drink." /datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) ..() /datum/reagent/consumable/sol_dry @@ -881,3 +889,47 @@ glass_icon_state = "glass_yellow" glass_name = "glass of bungo juice" glass_desc = "Exotic! You feel like you are on vactation already." + +/datum/reagent/consumable/prunomix + name = "pruno mixture" + color = "#E78108" + description = "Fruit, sugar, yeast, and water pulped together into a pungent slurry." + taste_description = "garbage" + glass_icon_state = "glass_orange" + glass_name = "glass of pruno mixture" + glass_desc = "Fruit, sugar, yeast, and water pulped together into a pungent slurry." + +/datum/reagent/consumable/aloejuice + name = "Aloe Juice" + color = "#A3C48B" + description = "A healthy and refreshing juice." + taste_description = "vegetable" + glass_icon_state = "glass_yellow" + glass_name = "glass of aloe juice" + glass_desc = "A healthy and refreshing juice." + +/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M) + if(M.getToxLoss() && prob(30)) + M.adjustToxLoss(-1, 0) + ..() + . = TRUE + +/datum/reagent/consumable/lean + name = "Lean" + description = "The drank that makes you go wheezy." + color = "#DE55ED" + quality = DRINK_NICE + taste_description = "purple and a hint of opiod." + glass_icon_state = "lean" + glass_name = "Lean" + glass_desc = "A drink that makes your life less miserable." + +/datum/reagent/consumable/lean/on_mob_life(mob/living/carbon/M) + if(M.slurring < 3) + M.slurring+= 2 + if(M.druggy < 3) + M.adjust_drugginess(1) + if(M.drowsyness < 3) + M.drowsyness++ + return ..() + diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index e20191c3358..5b21f771952 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -174,10 +174,10 @@ /datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.65, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine) /datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine) ..() /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index cd1c68e5058..a2635417301 100755 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -293,8 +293,8 @@ victim.blind_eyes(3) // 6 seconds victim.confused = max(M.confused, 5) // 10 seconds victim.Knockdown(3 SECONDS) - victim.add_movespeed_modifier(MOVESPEED_ID_PEPPER_SPRAY, update=TRUE, priority=100, multiplicative_slowdown=0.25, blacklisted_movetypes=(FLYING|FLOATING)) - addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, MOVESPEED_ID_PEPPER_SPRAY), 10 SECONDS) + victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray) + addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS) victim.update_damage_hud() if(method == INGEST) if(!holder.has_reagent(/datum/reagent/consumable/milk)) @@ -463,8 +463,15 @@ color = "#302000" // rgb: 48, 32, 0 taste_description = "wet and cheap noodles" +/datum/reagent/consumable/nutraslop + name = "Nutraslop" + description = "Mixture of leftover prison foods served on previous days." + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#3E4A00" // rgb: 62, 74, 0 + taste_description = "your imprisonment" + /datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) ..() /datum/reagent/consumable/hell_ramen @@ -575,6 +582,12 @@ color = "#DFDFDF" taste_description = "mayonnaise" +/datum/reagent/consumable/mold // yeah, ok, togopal, I guess you could call that a condiment + name = "Mold" + description = "This condiment will make any food break the mold. Or your stomach." + color ="#708a88" + taste_description = "rancid fungus" + /datum/reagent/consumable/tearjuice name = "Tear Juice" description = "A blinding substance extracted from certain onions." diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 84b1d21a784..b0ce6c8ce60 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -20,10 +20,10 @@ color = "#DB90C6" /datum/reagent/medicine/leporazine/on_mob_life(mob/living/carbon/M) - if(M.bodytemperature > BODYTEMP_NORMAL) - M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) - else if(M.bodytemperature < (BODYTEMP_NORMAL + 1)) - M.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + if(M.bodytemperature > M.get_body_temp_normal(apply_change=FALSE)) + M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE)) + else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1)) + M.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE)) ..() /datum/reagent/medicine/adminordrazine //An OP chemical for admins @@ -203,7 +203,7 @@ . = ..() if(iscarbon(M)) var/mob/living/carbon/patient = M - if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < TRESHOLD_UNHUSK) //One carp yields 12u rezadone. + if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone. patient.cure_husk("burn") patient.visible_message("[patient]'s body rapidly absorbs moisture from the enviroment, taking on a more healthy appearance.") @@ -599,11 +599,11 @@ /datum/reagent/medicine/ephedrine/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.5, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine) ADD_TRAIT(L, TRAIT_STUNRESISTANCE, type) /datum/reagent/medicine/ephedrine/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine) REMOVE_TRAIT(L, TRAIT_STUNRESISTANCE, type) ..() @@ -708,10 +708,10 @@ /datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(type) + L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) /datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(type) + L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) ..() /datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M) @@ -898,33 +898,12 @@ M.visible_message("[M]'s body starts convulsing!") M.notify_ghost_cloning("Your body is being revived with Strange Reagent!") M.do_jitter_animation(10) + var/excess_healing = 5*(reac_volume-amount_to_revive) //excess reagent will heal blood and organs across the board addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 40) //jitter immediately, then again after 4 and 8 seconds addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 80) - addtimer(CALLBACK(src, .proc/do_strange_revive,M,reac_volume,amount_to_revive), 79) //timing is everything! + addtimer(CALLBACK(M, /mob/living.proc/revive, FALSE, FALSE, excess_healing), 79) ..() -/datum/reagent/medicine/strange_reagent/proc/do_strange_revive(mob/living/M,reac_volume,revive_requirement) //we store revive_requirement because if we calculate it now we might have changed our damage numbers. - var/excess_healing = 5*(reac_volume-revive_requirement) //excess reagent will heal blood and organs across the board - if(iscarbon(M) && excess_healing) - var/mob/living/carbon/C = M - if(!(C.dna?.species && (NOBLOOD in C.dna.species.species_traits))) - C.blood_volume += (excess_healing*2)//1 excess = 10 blood - - for(var/i in C.internal_organs) - var/obj/item/organ/O = i - if(O.organ_flags & ORGAN_SYNTHETIC) - continue - O.applyOrganDamage(excess_healing*-1)//1 excess = 5 organ damage healed - - M.adjustOxyLoss(-20, TRUE) - M.adjustToxLoss(-20, TRUE) //slime friendly - M.updatehealth() - M.grab_ghost() - if(M.revive(full_heal = FALSE, admin_revive = FALSE)) - M.emote("gasp") - log_combat(M, M, "revived", src) - - /datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M) var/damage_at_random = rand(0,250)/100 //0 to 2.5 M.adjustBruteLoss(damage_at_random*REM, FALSE) @@ -994,11 +973,11 @@ /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants) ADD_TRAIT(L, TRAIT_STUNRESISTANCE, type) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants) REMOVE_TRAIT(L, TRAIT_STUNRESISTANCE, type) ..() @@ -1307,9 +1286,24 @@ /datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob) M.AdjustAllImmobility(-20, FALSE) M.adjustStaminaLoss(-10, 0) - ..() + M.Jitter(10) + M.Dizzy(10) return TRUE +/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L) + ..() + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + ADD_TRAIT(L, TRAIT_STUNRESISTANCE, type) + L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + +/datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/L) + ..() + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_STUNRESISTANCE, type) + L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + L.Dizzy(0) + L.Jitter(0) + /datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/M as mob) M.adjustToxLoss(1, 0) ..() @@ -1323,10 +1317,10 @@ /datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste) /datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) @@ -1371,13 +1365,13 @@ name = "Muscle Stimulant" description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain." -/datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/M) +/datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/L) . = ..() - M.ignore_slowdown(type) + L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) -/datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/M) +/datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/L) . = ..() - M.unignore_slowdown(type) + L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) /datum/reagent/medicine/modafinil name = "Modafinil" @@ -1588,8 +1582,7 @@ ..() ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) ADD_TRAIT(L, TRAIT_STUNRESISTANCE, type) - M.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.45, blacklisted_movetypes=(FLYING|FLOATING)) - M.ignore_slowdown(type) + M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/hepanephrodaxon) /datum/reagent/medicine/bonefixingjuice name = "C4L-Z1UM Agent" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index f2c0f918ffc..93debb344b8 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -87,6 +87,7 @@ description = "You don't even want to think about what's in here." taste_description = "gross iron" shot_glass_icon_state = "shotglassred" + material = /datum/material/meat /datum/reagent/vaccine //data must contain virus type @@ -176,7 +177,7 @@ else if(istype(O, /obj/item/stack/sheet/hairlesshide)) var/obj/item/stack/sheet/hairlesshide/HH = O - new /obj/item/stack/sheet/wetleather(get_turf(HH), HH.amount) + new /obj/item/stack/sheet/wethide(get_turf(HH), HH.amount) qdel(HH) /* @@ -438,7 +439,8 @@ if(ishuman(M)) var/mob/living/carbon/human/N = M - N.hairstyle = "Spiky" + if(!HAS_TRAIT(N, TRAIT_BALD)) + N.hairstyle = "Spiky" N.facial_hairstyle = "Shaved" N.facial_hair_color = "000" N.hair_color = "000" @@ -941,6 +943,7 @@ taste_description = "the colour blue and regret" irradiation_level = 2*REM process_flags = ORGANIC | SYNTHETIC //WaspStation Edit - IPCs + material = null /datum/reagent/bluespace name = "Bluespace Dust" @@ -1243,7 +1246,7 @@ name = "Stimulum" description = "An unstable experimental gas that greatly increases the energy of those that inhale it, while dealing increasing toxin damage over time." reagent_state = GAS - metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl are handled through gas breathing, metabolism must be lower for breathcode to keep up + metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon are handled through gas breathing, metabolism must be lower for breathcode to keep up color = "E1A116" taste_description = "sourness" @@ -1266,18 +1269,34 @@ name = "Nitryl" description = "A highly reactive gas that makes you feel faster." reagent_state = GAS - metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl are handled through gas breathing, metabolism must be lower for breathcode to keep up + metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon are handled through gas breathing, metabolism must be lower for breathcode to keep up color = "90560B" taste_description = "burning" /datum/reagent/nitryl/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.65, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl) /datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl) ..() +/datum/reagent/freon + name = "Freon" + description = "A powerful heat adsorbant." + reagent_state = GAS + metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon are handled through gas breathing, metabolism must be lower for breathcode to keep up + color = "90560B" + taste_description = "burning" + +/datum/reagent/freon/on_mob_metabolize(mob/living/L) + . = ..() + L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/freon) + +/datum/reagent/freon/on_mob_end_metabolize(mob/living/L) + L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/freon) + return ..() + /////////////////////////Colorful Powder//////////////////////////// //For colouring in /proc/mix_color_from_reagents @@ -1559,7 +1578,7 @@ reagent_state = LIQUID color = "#D35415" taste_description = "chemicals" - + /datum/reagent/pentaerythritol name = "Pentaerythritol" description = "Slow down, it ain't no spelling bee!" @@ -1677,7 +1696,7 @@ /datum/reagent/barbers_aid/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - if(M && ishuman(M)) + if(M && ishuman(M) && !HAS_TRAIT(M, TRAIT_BALD)) var/mob/living/carbon/human/H = M var/datum/sprite_accessory/hair/picked_hair = pick(GLOB.hairstyles_list) var/datum/sprite_accessory/facial_hair/picked_beard = pick(GLOB.facial_hairstyles_list) @@ -1695,7 +1714,7 @@ /datum/reagent/concentrated_barbers_aid/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - if(M && ishuman(M)) + if(M && ishuman(M) && !HAS_TRAIT(M, TRAIT_BALD)) var/mob/living/carbon/human/H = M to_chat(H, "Your hair starts growing at an incredible speed!") H.hairstyle = "Very Long Hair" @@ -2129,3 +2148,11 @@ reagent_state = SOLID color = "#E6E6DA" taste_mult = 0 + +/datum/reagent/consumable/gravy + name = "Gravy" + description = "A mixture of flour, water, and the juices of cooked meat." + taste_description = "gravy" + color = "#623301" + taste_mult = 1.2 + diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index fcca86d8e9a..be6c60797a6 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -34,7 +34,7 @@ /datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume) if(!..()) return - if(!M.has_dna()) + if(!M.has_dna() || (HAS_TRAIT(M, TRAIT_RADIMMUNE) || HAS_TRAIT(M, TRAIT_BADDNA))) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. if((method==VAPOR && prob(min(33, reac_volume))) || method==INGEST || method==PATCH || method==INJECT) M.randmuti() @@ -171,6 +171,8 @@ /datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L) ..() ADD_TRAIT(L, TRAIT_FAKEDEATH, type) + if(fakedeath_active) + L.fakedeath(type) /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/L) L.cure_fakedeath(type) @@ -179,8 +181,9 @@ /datum/reagent/toxin/zombiepowder/reaction_mob(mob/living/L, method=TOUCH, reac_volume) L.adjustOxyLoss(0.5*REM, 0) if(method == INGEST) - fakedeath_active = TRUE - L.fakedeath(type) + var/datum/reagent/toxin/zombiepowder/Z = L.reagents.has_reagent(/datum/reagent/toxin/zombiepowder) + if(istype(Z)) + Z.fakedeath_active = TRUE /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/M) ..() diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index ef3aee4d6fe..90bf1cbf4a8 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -177,10 +177,17 @@ WaspStation End*/ WaspStation End */ /datum/chemical_reaction/medsuture - required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 30, /datum/reagent/medicine/polypyr = 30) //This might be a bit much, reagent cost should be reviewed after implementation. + required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 20, /datum/reagent/medicine/polypyr = 15) //This might be a bit much, reagent cost should be reviewed after implementation. /datum/chemical_reaction/medsuture/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/stack/medical/suture/medicated(location) - return + +/datum/chemical_reaction/medmesh + required_reagents = list(/datum/reagent/cellulose = 20, /datum/reagent/consumable/aloejuice = 20, /datum/reagent/space_cleaner/sterilizine = 10) + +/datum/chemical_reaction/medmesh/on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/stack/medical/mesh/advanced(location) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 34090abe943..9c6ab7c0350 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -567,3 +567,8 @@ WaspStation End */ results = list(/datum/reagent/water/holywater = 1) required_reagents = list(/datum/reagent/water/hollowwater = 1) required_catalysts = list(/datum/reagent/water/holywater = 1) + +/datum/chemical_reaction/gravy + results = list(/datum/reagent/consumable/gravy = 3) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/flour = 1) + diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index e5861137a7f..544f3cb3526 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -98,8 +98,8 @@ reagents.total_volume *= rand(5,10) * 0.1 //Not all of it makes contact with the target var/mob/M = target var/R - target.visible_message("[M] has been splashed with something!", \ - "[M] has been splashed with something!") + target.visible_message("[M] is splashed with something!", \ + "[M] is splashed with something!") for(var/datum/reagent/A in reagents.reagent_list) R += "[A.type] ([num2text(A.volume)])," diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 12269e3905a..b07887d5598 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -281,3 +281,28 @@ name = "syringe (pentetic acid)" desc = "Contains pentetic acid, used to reduce high levels of radiation and heal severe toxins." list_reagents = list(/datum/reagent/medicine/pen_acid = 15) + +/obj/item/reagent_containers/syringe/contraband + name = "unlabeled syringe" + desc = "A syringe containing some sort of unknown chemical cocktail." + +/obj/item/reagent_containers/syringe/contraband/space_drugs + list_reagents = list(/datum/reagent/drug/space_drugs = 15) + +/obj/item/reagent_containers/syringe/contraband/krokodil + list_reagents = list(/datum/reagent/drug/krokodil = 15) + +/obj/item/reagent_containers/syringe/contraband/crank + list_reagents = list(/datum/reagent/drug/crank = 15) + +/obj/item/reagent_containers/syringe/contraband/methamphetamine + list_reagents = list(/datum/reagent/drug/methamphetamine = 15) + +/obj/item/reagent_containers/syringe/contraband/bath_salts + list_reagents = list(/datum/reagent/drug/bath_salts = 15) + +/obj/item/reagent_containers/syringe/contraband/fentanyl + list_reagents = list(/datum/reagent/toxin/fentanyl = 15) + +/obj/item/reagent_containers/syringe/contraband/morphine + list_reagents = list(/datum/reagent/medicine/morphine = 15) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 8d31ab0a4f8..2fd7ed75fab 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -104,7 +104,7 @@ playsound(src, 'sound/effects/refill.ogg', 50, TRUE) W.update_icon() else - user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [I.name]!", "That was stupid of you.") + user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [I.name]!", "That was stupid of you.") log_bomber(user, "detonated a", src, "via welding tool") boom() return @@ -183,6 +183,14 @@ anchored = TRUE reagent_id = /datum/reagent/consumable/cooking_oil +/obj/structure/reagent_dispensers/servingdish + name = "serving dish" + desc = "A dish full of food slop for your bowl." + icon = 'icons/obj/kitchen.dmi' + icon_state = "serving" + anchored = TRUE + reagent_id = /datum/reagent/consumable/nutraslop + /obj/structure/reagent_dispensers/plumbed name = "stationairy water tank" anchored = TRUE diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 06bbd81f977..5aa6d590f3b 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -140,7 +140,7 @@ if(user == target) user.visible_message("[user] climbs into [src].", "You climb into [src].") else - target.visible_message("[user] has placed [target] in [src].", "[user] has placed you in [src].") + target.visible_message("[user] places [target] in [src].", "[user] places you in [src].") log_combat(user, target, "stuffed", addition="into [src]") target.LAssailant = user update_icon() @@ -347,6 +347,10 @@ /obj/machinery/disposal/bin/update_overlays() . = ..() + + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + luminosity = 0 + if(machine_stat & BROKEN) return @@ -358,15 +362,19 @@ if(machine_stat & NOPOWER || panel_open) return + luminosity = 1 //check for items in disposal - occupied light if(contents.len > 0) . += "dispover-full" + SSvis_overlays.add_vis_overlay(src, icon, "dispover-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) //charging and ready light if(pressure_charging) . += "dispover-charge" + SSvis_overlays.add_vis_overlay(src, icon, "dispover-charge-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) else if(full_pressure) . += "dispover-ready" + SSvis_overlays.add_vis_overlay(src, icon, "dispover-ready-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha) /obj/machinery/disposal/bin/proc/do_flush() set waitfor = FALSE diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 566228adb52..b97d3a77b5f 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -9,7 +9,6 @@ anchored = FALSE density = FALSE pressure_resistance = 5*ONE_ATMOSPHERE - level = 2 max_integrity = 200 var/obj/pipe_type = /obj/structure/disposalpipe/segment var/pipename @@ -34,6 +33,8 @@ update_icon() + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) + /obj/structure/disposalconstruct/Move() var/old_dir = dir ..() @@ -45,10 +46,8 @@ if(is_pipe()) icon_state = "con[icon_state]" if(anchored) - level = initial(pipe_type.level) layer = initial(pipe_type.layer) else - level = initial(level) layer = initial(layer) else if(ispath(pipe_type, /obj/machinery/disposal/bin)) @@ -58,13 +57,6 @@ else icon_state = "condisposal" - -// hide called by levelupdate if turf intact status changes -// change visibility status and force update of icon -/obj/structure/disposalconstruct/hide(var/intact) - invisibility = (intact && level==1) ? INVISIBILITY_MAXIMUM: 0 // hide if floor is intact - update_icon() - /obj/structure/disposalconstruct/proc/get_disposal_dir() if(!is_pipe()) return NONE diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 55f17c690eb..a602a029227 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -7,7 +7,6 @@ anchored = TRUE density = FALSE obj_flags = CAN_BE_HIT | ON_BLUEPRINTS - level = 1 // underfloor only dir = NONE // dir will contain dominant direction for junction pipes max_integrity = 200 armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) @@ -41,7 +40,8 @@ dpdir |= turn(dir, -90) if(initialize_dirs & DISP_DIR_FLIP) dpdir |= turn(dir, 180) - update() + + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE) // pipe is deleted // ensure if holder is present, it is expelled @@ -80,16 +80,6 @@ H.forceMove(get_turf(src)) return null -// update the icon_state to reflect hidden status -/obj/structure/disposalpipe/proc/update() - var/turf/T = get_turf(src) - hide(T.intact && !isspaceturf(T)) // space never hides pipes - -// hide called by levelupdate if turf intact status changes -// change visibility status and force update of icon -/obj/structure/disposalpipe/hide(var/intact) - invisibility = intact ? INVISIBILITY_MAXIMUM: 0 // hide if floor is intact - // expel the held objects into a turf // called when there is a break in the pipe /obj/structure/disposalpipe/proc/expel(obj/structure/disposalholder/H, turf/T, direction) diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm new file mode 100644 index 00000000000..9cd6ded504d --- /dev/null +++ b/code/modules/religion/religion_sects.dm @@ -0,0 +1,195 @@ +/** + * # Religious Sects + * + * Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho. + * + * Sects are not meant to overwrite the fun of choosing a custom god/religion, but meant to enhance it. + * The idea is that Space Jesus (or whoever you worship) can be an evil bloodgod who takes the lifeforce out of people, a nature lover, or all things righteous and good. You decide! + * + */ +/datum/religion_sect +/// Name of the religious sect + var/name = "Religious Sect Base Type" +/// Description of the religious sect, Presents itself in the selection menu (AKA be brief) + var/desc = "Oh My! What Do We Have Here?!!?!?!?" +/// Opening message when someone gets converted + var/convert_opener +/// holder for alignments. + var/alignment = ALIGNMENT_GOOD +/// Does this require something before being available as an option? + var/starter = TRUE +/// The Sect's 'Mana' + var/favor = 0 //MANA! +/// The max amount of favor the sect can have + var/max_favor = 1000 +/// The default value for an item that can be sacrificed + var/default_item_favor = 5 +/// Turns into 'desired_items_typecache', lists the types that can be sacrificed barring optional features in can_sacrifice() + var/list/desired_items +/// Autopopulated by `desired_items` + var/list/desired_items_typecache +/// Lists of rites by type. Converts itself into a list of rites with "name - desc (favor_cost)" = type + var/list/rites_list +/// Changes the Altar of Gods icon + var/altar_icon +/// Changes the Altar of Gods icon_state + var/altar_icon_state + +/datum/religion_sect/New() + if(desired_items) + desired_items_typecache = typecacheof(desired_items) + if(rites_list) + var/listylist = generate_rites_list() + rites_list = listylist + on_select() + +///Generates a list of rites with 'name' = 'type' +/datum/religion_sect/proc/generate_rites_list() + . = list() + for(var/i in rites_list) + if(!ispath(i)) + continue + var/datum/religion_rites/RI = i + var/name_entry = "[initial(RI.name)]" + if(initial(RI.desc)) + name_entry += " - [initial(RI.desc)]" + if(initial(RI.favor_cost)) + name_entry += " ([initial(RI.favor_cost)] favor)" + + . += list("[name_entry]" = i) + +/// Activates once selected +/datum/religion_sect/proc/on_select() + +/// Activates once selected and on newjoins, oriented around people who become holy. +/datum/religion_sect/proc/on_conversion(mob/living/L) + to_chat(L, "[convert_opener] max_favor)) + . = (max_favor-favor) //if favor = 5 and we want to add 10 with a max of 10, we'll only be able to add 5 + favor = clamp(0,max_favor, favor+amount) + +/// Sets favor to a specific amount. Can provide optional features based on a user. +/datum/religion_sect/proc/set_favor(amount = 0, mob/living/L) + favor = clamp(0,max_favor,amount) + return favor + +/// Activates when an individual uses a rite. Can provide different/additional benefits depending on the user. +/datum/religion_sect/proc/on_riteuse(mob/living/user, obj/structure/altar_of_gods/AOG) + +/// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. +/datum/religion_sect/proc/sect_bless(mob/living/L, mob/living/user) + if(!ishuman(L)) + return FALSE + var/mob/living/carbon/human/H = L + for(var/X in H.bodyparts) + var/obj/item/bodypart/BP = X + if(BP.status == BODYPART_ROBOTIC) + to_chat(user, "[GLOB.deity] refuses to heal this metallic taint!") + return TRUE + + var/heal_amt = 10 + var/list/hurt_limbs = H.get_damaged_bodyparts(1, 1, null, BODYPART_ORGANIC) + + if(hurt_limbs.len) + for(var/X in hurt_limbs) + var/obj/item/bodypart/affecting = X + if(affecting.heal_damage(heal_amt, heal_amt, null, BODYPART_ORGANIC)) + H.update_damage_overlays() + H.visible_message("[user] heals [H] with the power of [GLOB.deity]!") + to_chat(H, "May the power of [GLOB.deity] compel you to be healed!") + playsound(user, "punch", 25, TRUE, -1) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/puritanism + name = "Puritanism (Default)" + desc = "Nothing special." + convert_opener = "Your run-of-the-mill sect, there are no benefits or boons associated. Praise normalcy!" + +/datum/religion_sect/technophile + name = "Technophile" + desc = "A sect oriented around technology." + convert_opener = "May you find peace in a metal shell, acolyte.
Bibles now recharge cyborgs and heal robotic limbs if targeted, but they do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." + alignment = ALIGNMENT_NEUT + desired_items = list(/obj/item/stock_parts/cell) + rites_list = list(/datum/religion_rites/synthconversion) + altar_icon_state = "convertaltar-blue" + +/datum/religion_sect/technophile/sect_bless(mob/living/L, mob/living/user) + if(iscyborg(L)) + var/mob/living/silicon/robot/R = L + var/charge_amt = 50 + if(L.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) + charge_amt *= 2 + R.cell?.charge += charge_amt + R.visible_message("[user] charges [R] with the power of [GLOB.deity]!") + to_chat(R, "You are charged by the power of [GLOB.deity]!") + SEND_SIGNAL(R, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(user, 'sound/effects/bang.ogg', 25, TRUE, -1) + return TRUE + if(!ishuman(L)) + return + var/mob/living/carbon/human/H = L + + //first we determine if we can charge them + var/did_we_charge = FALSE + var/obj/item/organ/stomach/ethereal/eth_stomach = H.getorganslot(ORGAN_SLOT_STOMACH) + if(istype(eth_stomach)) + eth_stomach.adjust_charge(3) + did_we_charge = TRUE + + //if we're not targetting a robot part we stop early + var/obj/item/bodypart/BP = H.get_bodypart(user.zone_selected) + if(BP.status != BODYPART_ROBOTIC) + if(!did_we_charge) + to_chat(user, "[GLOB.deity] scoffs at the idea of healing such fleshy matter!") + else + H.visible_message("[user] charges [H] with the power of [GLOB.deity]!") + to_chat(H, "You feel charged by the power of [GLOB.deity]!") + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(user, 'sound/machines/synth_yes.ogg', 25, TRUE, -1) + return TRUE + + //charge(?) and go + if(BP.heal_damage(5,5,null,BODYPART_ROBOTIC)) + H.update_damage_overlays() + + H.visible_message("[user] [did_we_charge ? "repairs" : "repairs and charges"] [H] with the power of [GLOB.deity]!") + to_chat(H, "The inner machinations of [GLOB.deity] [did_we_charge ? "repairs" : "repairs and charges"] you!") + playsound(user, 'sound/effects/bang.ogg', 25, TRUE, -1) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/technophile/can_sacrifice(obj/item/I, mob/living/L) + if(!..()) + return FALSE + var/obj/item/stock_parts/cell/the_cell = I + if(the_cell.charge < 3000) + to_chat("[GLOB.deity] does not accept pity amounts of power.") + return FALSE + return TRUE + + +/datum/religion_sect/technophile/on_sacrifice(obj/item/I, mob/living/L) + if(!is_type_in_typecache(I, desired_items_typecache)) + return + var/obj/item/stock_parts/cell/the_cell = I + adjust_favor(round(the_cell.charge/3000), L) + to_chat(L, "You offer [the_cell]'s power to [GLOB.deity], pleasing them.") + qdel(I) diff --git a/code/modules/religion/religion_structures.dm b/code/modules/religion/religion_structures.dm new file mode 100644 index 00000000000..638dfd6de90 --- /dev/null +++ b/code/modules/religion/religion_structures.dm @@ -0,0 +1,121 @@ +/obj/structure/altar_of_gods + name = "\improper Altar of the Gods" + desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "convertaltar" + density = TRUE + anchored = TRUE + layer = TABLE_LAYER + climbable = TRUE + pass_flags = LETPASSTHROW + can_buckle = TRUE + buckle_lying = 90 //we turn to you! + var/datum/religion_sect/sect_to_altar // easy access! + var/datum/religion_rites/performing_rite + +/obj/structure/altar_of_gods/examine(mob/user) + . = ..() + var/can_i_see = FALSE + if(isobserver(user)) + can_i_see = TRUE + else if(isliving(user)) + var/mob/living/L = user + if(L.mind?.holy_role) + can_i_see = TRUE + + if(!can_i_see || !sect_to_altar) + return + + . += "The sect currently has [round(sect_to_altar.favor)] favor with [GLOB.deity]." + if(!sect_to_altar.rites_list) + return + . += "List of available Rites:" + . += sect_to_altar.rites_list + + +/obj/structure/altar_of_gods/Initialize(mapload) + . = ..() + if(GLOB.religious_sect) + sect_to_altar = GLOB.religious_sect + if(sect_to_altar.altar_icon) + icon = sect_to_altar.altar_icon + if(sect_to_altar.altar_icon_state) + icon_state = sect_to_altar.altar_icon_state + +/obj/structure/altar_of_gods/attack_hand(mob/living/user) + if(!Adjacent(user) || !user.pulling) + return ..() + if(!isliving(user.pulling)) + return ..() + var/mob/living/pushed_mob = user.pulling + if(pushed_mob.buckled) + to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") + return ..() + to_chat(user,"Your sect doesn't have any rites to perform!") + return + var/rite_select = input(user,"Select a rite to perform!","Select a rite",null) in sect_to_altar.rites_list + if(!rite_select || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + to_chat(user,"You cannot perform the rite at this time.") + return + var/selection2type = sect_to_altar.rites_list[rite_select] + performing_rite = new selection2type(src) + if(!performing_rite.perform_rite(user, src)) + QDEL_NULL(performing_rite) + else + performing_rite.invoke_effect(user, src) + sect_to_altar.adjust_favor(-performing_rite.favor_cost) + QDEL_NULL(performing_rite) + return + + if(user.mind.holy_role != HOLY_ROLE_HIGHPRIEST) + to_chat(user, "You are not the high priest, and therefore cannot select a religious sect.") + return + + var/list/available_options = generate_available_sects(user) + if(!available_options) + return + + var/sect_select = input(user,"Select a sect (You CANNOT revert this decision!)","Select a Sect",null) in available_options + if(!sect_select || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + to_chat(user,"You cannot select a sect at this time.") + return + var/type_selected = available_options[sect_select] + GLOB.religious_sect = new type_selected() + for(var/i in GLOB.player_list) + if(!isliving(i)) + continue + var/mob/living/am_i_holy_living = i + if(!am_i_holy_living.mind?.holy_role) + continue + GLOB.religious_sect.on_conversion(am_i_holy_living) + sect_to_altar = GLOB.religious_sect + if(sect_to_altar.altar_icon) + icon = sect_to_altar.altar_icon + if(sect_to_altar.altar_icon_state) + icon_state = sect_to_altar.altar_icon_state + + + +/obj/structure/altar_of_gods/proc/generate_available_sects(mob/user) //eventually want to add sects you get from unlocking certain achievements + . = list() + for(var/i in subtypesof(/datum/religion_sect)) + var/datum/religion_sect/not_a_real_instance_rs = i + if(initial(not_a_real_instance_rs.starter)) + . += list(initial(not_a_real_instance_rs.name) = i) diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm new file mode 100644 index 00000000000..9cb9153a014 --- /dev/null +++ b/code/modules/religion/rites.dm @@ -0,0 +1,78 @@ +/datum/religion_rites +/// name of the religious rite + var/name = "religious rite" +/// Description of the religious rite + var/desc = "immm gonna rooon" +/// length it takes to complete the ritual + var/ritual_length = (10 SECONDS) //total length it'll take +/// list of invocations said (strings) throughout the rite + var/list/ritual_invocations //strings that are by default said evenly throughout the rite +/// message when you invoke + var/invoke_msg + var/favor_cost = 0 + +///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else? +/datum/religion_rites/proc/perform_rite(mob/living/user, obj/structure/altar_of_gods/AOG) + if(GLOB.religious_sect?.favor < favor_cost) + to_chat(user, "This rite requires more favor!") + return FALSE + to_chat(user, "You begin to perform the rite of [name]...") + if(!ritual_invocations) + if(do_after(user, target = user, delay = ritual_length)) + return TRUE + return FALSE + var/first_invoke = TRUE + for(var/i in ritual_invocations) + if(first_invoke) //instant invoke + user.say(i) + first_invoke = FALSE + continue + if(!ritual_invocations.len) //we divide so we gotta protect + return FALSE + if(!do_after(user, target = user, delay = ritual_length/ritual_invocations.len)) + return FALSE + user.say(i) + if(!do_after(user, target = user, delay = ritual_length/ritual_invocations.len)) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete + return FALSE + if(invoke_msg) + user.say(invoke_msg) + return TRUE + + +///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm) +/datum/religion_rites/proc/invoke_effect(mob/living/user, obj/structure/altar_of_gods/AOG) + GLOB.religious_sect.on_riteuse(user,AOG) + return TRUE + + +/*********Technophiles**********/ + +/datum/religion_rites/synthconversion + name = "Synthetic Conversion" + desc = "Convert a human-esque individual into a (superior) Android." + ritual_length = 1 MINUTES + ritual_invocations = list("By the inner workings of our god...", + "... We call upon you, in the face of adversity...", + "... to complete us, removing that which is undesirable...") + invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!" + favor_cost = 500 + +/datum/religion_rites/synthconversion/perform_rite(mob/living/user, obj/structure/altar_of_gods/AOG) + if(!AOG?.buckled_mobs?.len) + to_chat(user, "This rite requires an individual to be buckled to [AOG].") + return FALSE + return ..() + +/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, obj/structure/altar_of_gods/AOG) + if(!AOG?.buckled_mobs?.len) + return FALSE + var/mob/living/carbon/human/human2borg + for(var/i in AOG.buckled_mobs) + if(istype(i,/mob/living/carbon/human)) + human2borg = i + break + if(!human2borg) + return FALSE + human2borg.set_species(/datum/species/android) + human2borg.visible_message("[human2borg] has been converted by the rite of [name]!") + return TRUE diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index b78c444aafc..8401d618aa0 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -6,7 +6,6 @@ name = "AI Design (AI Core)" desc = "Allows for the construction of circuit boards used to build new AI cores." id = "aicore" - materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/bluespace = 500) build_path = /obj/item/circuitboard/aicore category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 40d8dd409a2..3cc1f7d40b5 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -20,6 +20,15 @@ category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE +/datum/design/broom + name="Push Broom" + id="pushbroom" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 2000) + build_path = /obj/item/pushbroom + category = list("initial","Tools","Tool Designs") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + /datum/design/crowbar name = "Pocket Crowbar" id = "crowbar" @@ -368,13 +377,21 @@ departmental_flags = DEPARTMENTAL_FLAG_SERVICE /datum/design/tray - name = "Tray" - id = "tray" + name = "Serving Tray" + id = "servingtray" build_type = AUTOLATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/storage/bag/tray category = list("initial","Dinnerware") +/datum/design/tray + name = "Cafeteria Tray" + id = "foodtray" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 3000) + build_path = /obj/item/storage/bag/tray/cafeteria + category = list("initial","Dinnerware") + /datum/design/bowl name = "Bowl" id = "bowl" @@ -1044,7 +1061,7 @@ id = "plastic_trees" build_type = AUTOLATHE materials = list(/datum/material/plastic = 8000) - build_path = /obj/item/twohanded/required/kirbyplants/fullysynthetic + build_path = /obj/item/kirbyplants/fullysynthetic category = list("initial", "Misc") /datum/design/beads @@ -1070,3 +1087,11 @@ materials = list(/datum/material/plastic = 1000) build_path = /obj/item/storage/box/plastic category = list("initial", "Misc") + +/datum/design/sticky_tape + name = "Sticky Tape" + id = "sticky_tape" + build_type = AUTOLATHE + materials = list(/datum/material/plastic = 500) + build_path = /obj/item/stack/sticky_tape + category = list("initial", "Misc") diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 7eca4564c40..01468176b6b 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -310,7 +310,7 @@ build_path = /obj/item/circuitboard/computer/nanite_cloud_controller category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - + /datum/design/board/advanced_camera name = "Computer Design (Advanced Camera Console)" desc = "Allows for the construction of circuit boards used to build advanced camera consoles." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 1c3f10b076e..c69fb887f4e 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -641,3 +641,11 @@ build_path = /obj/item/circuitboard/machine/medipen_refiller category = list ("Medical Machinery") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/board/sheetifier + name = "Sheetifier" + desc = "This machine turns weird things into sheets." + id = "sheetifier" + build_path = /obj/item/circuitboard/machine/sheetifier + category = list ("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ALL diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index a6810c525c4..05680238484 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -163,14 +163,25 @@ /datum/design/defibrillator_mount name = "Defibrillator Wall Mount" - desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables." - id = "defibmount" + desc = "A mounted frame for holding defibrillators, providing easy security." + id = "defibmountdefault" build_type = PROTOLATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/wallframe/defib_mount category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL +/datum/design/defibrillator_mount_charging + name = "PENLITE Defibrillator Wall Mount" + desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables. The PENLITE version also allows for slow recharging of the defib's battery." + id = "defibmount" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000, /datum/material/silver = 500) + build_path = /obj/item/wallframe/defib_mount/charging + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + + /datum/design/defibrillator_compact name = "Compact Defibrillator" desc = "A compact defibrillator that can be worn on a belt." @@ -700,13 +711,6 @@ surgery = /datum/surgery/healing/combo/upgraded/femto id = "surgery_heal_combo_upgrade_femto" -/datum/design/surgery/revival - name = "Revival" - desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." - id = "surgery_revival" - surgery = /datum/surgery/advanced/revival - research_icon_state = "surgery_head" - /datum/design/surgery/brainwashing name = "Brainwashing" desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant." diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 6c9a4aee318..bf11112bd6f 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -1,595 +1,610 @@ - -///////////////////////////////////////// -/////////////////HUDs//////////////////// -///////////////////////////////////////// - -/datum/design/health_hud - name = "Health Scanner HUD" - desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." - id = "health_hud" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/hud/health - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/health_hud_night - name = "Night Vision Health Scanner HUD" - desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." - id = "health_hud_night" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/silver = 350) - build_path = /obj/item/clothing/glasses/hud/health/night - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/security_hud - name = "Security HUD" - desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status." - id = "security_hud" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/hud/security - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/security_hud_night - name = "Night Vision Security HUD" - desc = "A heads-up display which provides id data and vision in complete darkness." - id = "security_hud_night" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/gold = 350) - build_path = /obj/item/clothing/glasses/hud/security/night - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/diagnostic_hud - name = "Diagnostic HUD" - desc = "A HUD used to analyze and determine faults within robotic machinery." - id = "diagnostic_hud" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/hud/diagnostic - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/diagnostic_hud_night - name = "Night Vision Diagnostic HUD" - desc = "Upgraded version of the diagnostic HUD designed to function during a power failure." - id = "diagnostic_hud_night" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/plasma = 300) - build_path = /obj/item/clothing/glasses/hud/diagnostic/night - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -///////////////////////////////////////// -//////////////////Misc/////////////////// -///////////////////////////////////////// - -/datum/design/welding_goggles - name = "Welding Goggles" - desc = "Protects the eyes from bright flashes; approved by the mad scientist association." - id = "welding_goggles" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/welding - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/welding_mask - name = "Welding Gas Mask" - desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd." - id = "weldingmask" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) - build_path = /obj/item/clothing/mask/gas/welding - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/bright_helmet - name = "Workplace-Ready Firefighter Helmet" - desc = "By applying state of the art lighting technology to a fire helmet with industry standard photo-chemical hardening methods, this hardhat will protect you from robust workplace hazards." - id = "bright_helmet" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500) - build_path = /obj/item/clothing/head/hardhat/red/upgraded - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_CARGO - -/datum/design/mauna_mug - name = "Mauna Mug" - desc = "This awesome mug will ensure your coffee never stays cold!" - id = "mauna_mug" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 1000, /datum/material/glass = 100) - build_path = /obj/item/reagent_containers/glass/maunamug - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ALL - -/datum/design/rolling_table - name = "Rolly poly" - desc = "We duct-taped some wheels to the bottom of a table. It's goddamn science alright?" - id = "rolling_table" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 4000) - build_path = /obj/structure/table/rolling - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ALL - -/datum/design/portaseeder - name = "Portable Seed Extractor" - desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." - id = "portaseeder" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 1000, /datum/material/glass = 400) - build_path = /obj/item/storage/bag/plants/portaseeder - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/air_horn - name = "Air Horn" - desc = "Damn son, where'd you find this?" - id = "air_horn" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000) - build_path = /obj/item/bikehorn/airhorn - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK! - -/datum/design/mesons - name = "Optical Meson Scanners" - desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." - id = "mesons" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/meson - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/engine_goggles - name = "Engineering Scanner Goggles" - desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes." - id = "engine_goggles" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100) - build_path = /obj/item/clothing/glasses/meson/engine - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/tray_goggles - name = "Optical T-Ray Scanners" - desc = "Used by engineering staff to see underfloor objects such as cables and pipes." - id = "tray_goggles" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/meson/engine/tray - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/nvgmesons - name = "Night Vision Optical Meson Scanners" - desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display." - id = "nvgmesons" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) - build_path = /obj/item/clothing/glasses/meson/night - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO - -/datum/design/night_vision_goggles - name = "Night Vision Goggles" - desc = "Goggles that let you see through darkness unhindered." - id = "night_visision_goggles" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) - build_path = /obj/item/clothing/glasses/night - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY - -/datum/design/magboots - name = "Magnetic Boots" - desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." - id = "magboots" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 4500, /datum/material/silver = 1500, /datum/material/gold = 2500) - build_path = /obj/item/clothing/shoes/magboots - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/forcefield_projector - name = "Forcefield Projector" - desc = "A device which can project temporary forcefields to seal off an area." - id = "forcefield_projector" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2500, /datum/material/glass = 1000) - build_path = /obj/item/forcefield_projector - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/sci_goggles - name = "Science Goggles" - desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine." - id = "scigoggles" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 500, /datum/material/glass = 500) - build_path = /obj/item/clothing/glasses/science - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/diskplantgene - name = "Plant Data Disk" - desc = "A disk for storing plant genetic data." - id = "diskplantgene" - build_type = PROTOLATHE - materials = list(/datum/material/iron=200, /datum/material/glass = 100) - build_path = /obj/item/disk/plantgene - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/roastingstick - name = "Advanced Roasting Stick" - desc = "A roasting stick for cooking sausages in exotic ovens." - id = "roastingstick" - build_type = PROTOLATHE - materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250) - build_path = /obj/item/melee/roastingstick - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/locator - name = "Bluespace Locator" - desc = "Used to track portable teleportation beacons and targets with embedded tracking implants." - id = "locator" - build_type = PROTOLATHE - materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/silver = 500) - build_path = /obj/item/locator - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/quantum_keycard - name = "Quantum Keycard" - desc = "Allows for the construction of a quantum keycard." - id = "quantum_keycard" - build_type = PROTOLATHE - materials = list(/datum/material/glass = 500, /datum/material/iron = 500, /datum/material/silver = 500, /datum/material/bluespace = 1000) - build_path = /obj/item/quantum_keycard - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/anomaly_neutralizer - name = "Anomaly Neutralizer" - desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine." - id = "anomaly_neutralizer" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2000, /datum/material/gold = 2000, /datum/material/plasma = 5000, /datum/material/uranium = 2000) - build_path = /obj/item/anomaly_neutralizer - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/donksoft_refill - name = "Donksoft Toy Vendor Refill" - desc = "A refill canister for Donksoft Toy Vendors." - id = "donksoft_refill" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 25000, /datum/material/glass = 15000, /datum/material/plasma = 20000, /datum/material/gold = 10000, /datum/material/silver = 10000) - build_path = /obj/item/vending_refill/donksoft - category = list("Equipment") - -/datum/design/oxygen_tank - name = "Oxygen Tank" - desc = "An empty oxygen tank." - id = "oxygen_tank" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2000) - build_path = /obj/item/tank/internals/oxygen/empty - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/plasma_tank - name = "Plasma Tank" - desc = "An empty oxygen tank." - id = "plasma_tank" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2000) - build_path = /obj/item/tank/internals/plasma/empty - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/id - name = "Identification Card" - desc = "A card used to provide ID and determine access across the station." - id = "idcard" - build_type = PROTOLATHE - materials = list(/datum/material/iron=200, /datum/material/glass = 100) - build_path = /obj/item/card/id - category = list("Electronics") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/eng_gloves - name = "Tinkers Gloves" - desc = "Overdesigned engineering gloves that have automated construction subroutines dialed in, allowing for faster construction while worn." - id = "eng_gloves" - build_type = PROTOLATHE - materials = list(/datum/material/iron=2000, /datum/material/silver=1500, /datum/material/plastic = 1000, /datum/material/gold = 1000) - build_path = /obj/item/clothing/gloves/color/latex/engineering - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/lavarods - name = "Lava-Resistant Metal Rods" - id = "lava_rods" - build_type = PROTOLATHE - materials = list(/datum/material/iron=1000, /datum/material/plasma=500, /datum/material/titanium=2000) - build_path = /obj/item/stack/rods/lava - category = list("initial", "Stock Parts") - departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/plasticducky - name = "Rubber Ducky" - desc = "The classic Nanotrasen design for competitively priced bath based duck toys. No need for fancy Waffle co. rubber, buy Plastic Ducks today!" - id = "plasticducky" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = 1000) - build_path = /obj/item/bikehorn/rubberducky/plasticducky - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ALL - -///////////////////////////////////////// -////////////Janitor Designs////////////// -///////////////////////////////////////// - -/datum/design/advmop - name = "Advanced Mop" - desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals." - id = "advmop" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2500, /datum/material/glass = 200) - build_path = /obj/item/mop/advanced - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/blutrash - name = "Trashbag of Holding" - desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." - id = "blutrash" - build_type = PROTOLATHE - materials = list(/datum/material/gold = 1500, /datum/material/uranium = 250, /datum/material/plasma = 1500) - build_path = /obj/item/storage/bag/trash/bluespace - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/buffer - name = "Floor Buffer Upgrade" - desc = "A floor buffer that can be attached to vehicular janicarts." - id = "buffer" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) - build_path = /obj/item/janiupgrade - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/spraybottle - name = "Spray Bottle" - desc = "A spray bottle, with an unscrewable top." - id = "spraybottle" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) - build_path = /obj/item/reagent_containers/spray - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/beartrap - name = "Bear Trap" - desc = "A trap used to catch space bears and other legged creatures." - id = "beartrap" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/titanium = 1000) - build_path = /obj/item/restraints/legcuffs/beartrap - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -///////////////////////////////////////// -/////////////Holobarriers//////////////// -///////////////////////////////////////// - -/datum/design/holosign - name = "Holographic Sign Projector" - desc = "A holograpic projector used to project various warning signs." - id = "holosign" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) - build_path = /obj/item/holosign_creator - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/holobarrier_jani - name = "Custodial Holobarrier Projector" - desc = "A holograpic projector used to project hard light wet floor barriers." - id = "holobarrier_jani" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000, /datum/material/silver = 1000) - build_path = /obj/item/holosign_creator/janibarrier - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - - -/datum/design/holosignsec - name = "Security Holobarrier Projector" - desc = "A holographic projector that creates holographic security barriers." - id = "holosignsec" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) - build_path = /obj/item/holosign_creator/security - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/holosignengi - name = "Engineering Holobarrier Projector" - desc = "A holographic projector that creates holographic engineering barriers." - id = "holosignengi" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) - build_path = /obj/item/holosign_creator/engineering - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/holosignatmos - name = "ATMOS Holofan Projector" - desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions." - id = "holosignatmos" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) - build_path = /obj/item/holosign_creator/atmos - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/holobarrier_med - name = "PENLITE Holobarrier Projector" - desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." - build_type = PROTOLATHE - build_path = /obj/item/holosign_creator/medical - materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) - id = "holobarrier_med" - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -///////////////////////////////////////// -////////////////Armour/////////////////// -///////////////////////////////////////// - -/datum/design/reactive_armour - name = "Reactive Armour Shell" - desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user." - id = "reactive_armour" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 10000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) - build_path = /obj/item/reactive_armour_shell - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING - -/datum/design/knight_armour - name = "Knight Armour" - desc = "A royal knight's favorite garments. Can be trimmed by any friendly person." - id = "knight_armour" - build_type = AUTOLATHE - materials = list(MAT_CATEGORY_RIGID = 10000) - build_path = /obj/item/clothing/suit/armor/riot/knight/greyscale - category = list("Imported") - -/datum/design/knight_helmet - name = "Knight Helmet" - desc = "A royal knight's favorite hat. If you hold it upside down it's actually a bucket." - id = "knight_helmet" - build_type = AUTOLATHE - materials = list(MAT_CATEGORY_RIGID = 5000) - build_path = /obj/item/clothing/head/helmet/knight/greyscale - category = list("Imported") - - - -///////////////////////////////////////// -/////////////Security//////////////////// -///////////////////////////////////////// - -/datum/design/seclite - name = "Seclite" - desc = "A robust flashlight used by security." - id = "seclite" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 2500) - build_path = /obj/item/flashlight/seclite - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/detective_scanner - name = "Forensic Scanner" - desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings." - id = "detective_scanner" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 2500, /datum/material/silver = 2000) - build_path = /obj/item/detective_scanner - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/pepperspray - name = "Pepper Spray" - desc = "Manufactured by UhangInc, used to blind and down an opponent quickly. Printed pepper sprays do not contain reagents." - id = "pepperspray" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) - build_path = /obj/item/reagent_containers/spray/pepper/empty - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/bola_energy - name = "Energy Bola" - desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests." - id = "bola_energy" - build_type = PROTOLATHE - materials = list(/datum/material/silver = 500, /datum/material/plasma = 500, /datum/material/titanium = 500) - build_path = /obj/item/restraints/legcuffs/bola/energy - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/zipties - name = "Zipties" - desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use." - id = "zipties" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = 250) - build_path = /obj/item/restraints/handcuffs/cable/zipties - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/evidencebag - name = "Evidence Bag" - desc = "An empty evidence bag." - id = "evidencebag" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = 100) - build_path = /obj/item/evidencebag - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/plumbing_rcd - name = "Plumbing Constructor" - id = "plumbing_rcd" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/plastic = 1000) - build_path = /obj/item/construction/plumbing - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - - - -///////////////////////////////////////// -/////////////////Tape//////////////////// -///////////////////////////////////////// - -/datum/design/sticky_tape - name = "Sticky Tape" - id = "sticky_tape" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = 500) - build_path = /obj/item/stack/sticky_tape - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/super_sticky_tape - name = "Super Sticky Tape" - id = "super_sticky_tape" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = 3000) - build_path = /obj/item/stack/sticky_tape/super - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/pointy_tape - name = "Pointy Tape" - id = "pointy_tape" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 1500, /datum/material/plastic = 1000) - build_path = /obj/item/stack/sticky_tape/pointy - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +///////////////////////////////////////// +/////////////////HUDs//////////////////// +///////////////////////////////////////// + +/datum/design/health_hud + name = "Health Scanner HUD" + desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." + id = "health_hud" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/hud/health + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/health_hud_night + name = "Night Vision Health Scanner HUD" + desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." + id = "health_hud_night" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/silver = 350) + build_path = /obj/item/clothing/glasses/hud/health/night + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/security_hud + name = "Security HUD" + desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status." + id = "security_hud" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/hud/security + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/security_hud_night + name = "Night Vision Security HUD" + desc = "A heads-up display which provides id data and vision in complete darkness." + id = "security_hud_night" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/gold = 350) + build_path = /obj/item/clothing/glasses/hud/security/night + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/diagnostic_hud + name = "Diagnostic HUD" + desc = "A HUD used to analyze and determine faults within robotic machinery." + id = "diagnostic_hud" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/hud/diagnostic + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/diagnostic_hud_night + name = "Night Vision Diagnostic HUD" + desc = "Upgraded version of the diagnostic HUD designed to function during a power failure." + id = "diagnostic_hud_night" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/plasma = 300) + build_path = /obj/item/clothing/glasses/hud/diagnostic/night + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +///////////////////////////////////////// +//////////////////Misc/////////////////// +///////////////////////////////////////// + +/datum/design/welding_goggles + name = "Welding Goggles" + desc = "Protects the eyes from bright flashes; approved by the mad scientist association." + id = "welding_goggles" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/welding + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/welding_mask + name = "Welding Gas Mask" + desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd." + id = "weldingmask" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) + build_path = /obj/item/clothing/mask/gas/welding + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/bright_helmet + name = "Workplace-Ready Firefighter Helmet" + desc = "By applying state of the art lighting technology to a fire helmet with industry standard photo-chemical hardening methods, this hardhat will protect you from robust workplace hazards." + id = "bright_helmet" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500) + build_path = /obj/item/clothing/head/hardhat/red/upgraded + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_CARGO + +/datum/design/mauna_mug + name = "Mauna Mug" + desc = "This awesome mug will ensure your coffee never stays cold!" + id = "mauna_mug" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 1000, /datum/material/glass = 100) + build_path = /obj/item/reagent_containers/glass/maunamug + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ALL + +/datum/design/rolling_table + name = "Rolly poly" + desc = "We duct-taped some wheels to the bottom of a table. It's goddamn science alright?" + id = "rolling_table" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 4000) + build_path = /obj/structure/table/rolling + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ALL + +/datum/design/portaseeder + name = "Portable Seed Extractor" + desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." + id = "portaseeder" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 1000, /datum/material/glass = 400) + build_path = /obj/item/storage/bag/plants/portaseeder + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/air_horn + name = "Air Horn" + desc = "Damn son, where'd you find this?" + id = "air_horn" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000) + build_path = /obj/item/bikehorn/airhorn + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK! + +/datum/design/mesons + name = "Optical Meson Scanners" + desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." + id = "mesons" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/meson + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/engine_goggles + name = "Engineering Scanner Goggles" + desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes." + id = "engine_goggles" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100) + build_path = /obj/item/clothing/glasses/meson/engine + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/tray_goggles + name = "Optical T-Ray Scanners" + desc = "Used by engineering staff to see underfloor objects such as cables and pipes." + id = "tray_goggles" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/meson/engine/tray + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/nvgmesons + name = "Night Vision Optical Meson Scanners" + desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display." + id = "nvgmesons" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) + build_path = /obj/item/clothing/glasses/meson/night + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO + +/datum/design/night_vision_goggles + name = "Night Vision Goggles" + desc = "Goggles that let you see through darkness unhindered." + id = "night_visision_goggles" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) + build_path = /obj/item/clothing/glasses/night + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY + +/datum/design/magboots + name = "Magnetic Boots" + desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." + id = "magboots" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 4500, /datum/material/silver = 1500, /datum/material/gold = 2500) + build_path = /obj/item/clothing/shoes/magboots + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/forcefield_projector + name = "Forcefield Projector" + desc = "A device which can project temporary forcefields to seal off an area." + id = "forcefield_projector" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2500, /datum/material/glass = 1000) + build_path = /obj/item/forcefield_projector + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/sci_goggles + name = "Science Goggles" + desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine." + id = "scigoggles" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) + build_path = /obj/item/clothing/glasses/science + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/diskplantgene + name = "Plant Data Disk" + desc = "A disk for storing plant genetic data." + id = "diskplantgene" + build_type = PROTOLATHE + materials = list(/datum/material/iron=200, /datum/material/glass = 100) + build_path = /obj/item/disk/plantgene + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/roastingstick + name = "Advanced Roasting Stick" + desc = "A roasting stick for cooking sausages in exotic ovens." + id = "roastingstick" + build_type = PROTOLATHE + materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250) + build_path = /obj/item/melee/roastingstick + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/locator + name = "Bluespace Locator" + desc = "Used to track portable teleportation beacons and targets with embedded tracking implants." + id = "locator" + build_type = PROTOLATHE + materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/silver = 500) + build_path = /obj/item/locator + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/quantum_keycard + name = "Quantum Keycard" + desc = "Allows for the construction of a quantum keycard." + id = "quantum_keycard" + build_type = PROTOLATHE + materials = list(/datum/material/glass = 500, /datum/material/iron = 500, /datum/material/silver = 500, /datum/material/bluespace = 1000) + build_path = /obj/item/quantum_keycard + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/anomaly_neutralizer + name = "Anomaly Neutralizer" + desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine." + id = "anomaly_neutralizer" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000, /datum/material/gold = 2000, /datum/material/plasma = 5000, /datum/material/uranium = 2000) + build_path = /obj/item/anomaly_neutralizer + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/donksoft_refill + name = "Donksoft Toy Vendor Refill" + desc = "A refill canister for Donksoft Toy Vendors." + id = "donksoft_refill" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 25000, /datum/material/glass = 15000, /datum/material/plasma = 20000, /datum/material/gold = 10000, /datum/material/silver = 10000) + build_path = /obj/item/vending_refill/donksoft + category = list("Equipment") + +/datum/design/oxygen_tank + name = "Oxygen Tank" + desc = "An empty oxygen tank." + id = "oxygen_tank" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000) + build_path = /obj/item/tank/internals/oxygen/empty + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/plasma_tank + name = "Plasma Tank" + desc = "An empty oxygen tank." + id = "plasma_tank" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000) + build_path = /obj/item/tank/internals/plasma/empty + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/id + name = "Identification Card" + desc = "A card used to provide ID and determine access across the station." + id = "idcard" + build_type = PROTOLATHE + materials = list(/datum/material/iron=200, /datum/material/glass = 100) + build_path = /obj/item/card/id + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/eng_gloves + name = "Tinkers Gloves" + desc = "Overdesigned engineering gloves that have automated construction subroutines dialed in, allowing for faster construction while worn." + id = "eng_gloves" + build_type = PROTOLATHE + materials = list(/datum/material/iron=2000, /datum/material/silver=1500, /datum/material/gold = 1000) + build_path = /obj/item/clothing/gloves/color/latex/engineering + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/lavarods + name = "Lava-Resistant Metal Rods" + id = "lava_rods" + build_type = PROTOLATHE + materials = list(/datum/material/iron=1000, /datum/material/plasma=500, /datum/material/titanium=2000) + build_path = /obj/item/stack/rods/lava + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/plasticducky + name = "Rubber Ducky" + desc = "The classic Nanotrasen design for competitively priced bath based duck toys. No need for fancy Waffle co. rubber, buy Plastic Ducks today!" + id = "plasticducky" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 1000) + build_path = /obj/item/bikehorn/rubberducky/plasticducky + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ALL + +///////////////////////////////////////// +////////////Janitor Designs////////////// +///////////////////////////////////////// + +/datum/design/advmop + name = "Advanced Mop" + desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals." + id = "advmop" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2500, /datum/material/glass = 200) + build_path = /obj/item/mop/advanced + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/blutrash + name = "Trashbag of Holding" + desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." + id = "blutrash" + build_type = PROTOLATHE + materials = list(/datum/material/gold = 1500, /datum/material/uranium = 250, /datum/material/plasma = 1500) + build_path = /obj/item/storage/bag/trash/bluespace + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/buffer + name = "Floor Buffer Upgrade" + desc = "A floor buffer that can be attached to vehicular janicarts." + id = "buffer" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) + build_path = /obj/item/janiupgrade + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/spraybottle + name = "Spray Bottle" + desc = "A spray bottle, with an unscrewable top." + id = "spraybottle" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) + build_path = /obj/item/reagent_containers/spray + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/beartrap + name = "Bear Trap" + desc = "A trap used to catch space bears and other legged creatures." + id = "beartrap" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/titanium = 1000) + build_path = /obj/item/restraints/legcuffs/beartrap + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +///////////////////////////////////////// +/////////////Holobarriers//////////////// +///////////////////////////////////////// + +/datum/design/holosign + name = "Holographic Sign Projector" + desc = "A holograpic projector used to project various warning signs." + id = "holosign" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) + build_path = /obj/item/holosign_creator + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/holobarrier_jani + name = "Custodial Holobarrier Projector" + desc = "A holograpic projector used to project hard light wet floor barriers." + id = "holobarrier_jani" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000, /datum/material/silver = 1000) + build_path = /obj/item/holosign_creator/janibarrier + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + + +/datum/design/holosignsec + name = "Security Holobarrier Projector" + desc = "A holographic projector that creates holographic security barriers." + id = "holosignsec" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) + build_path = /obj/item/holosign_creator/security + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/holosignengi + name = "Engineering Holobarrier Projector" + desc = "A holographic projector that creates holographic engineering barriers." + id = "holosignengi" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) + build_path = /obj/item/holosign_creator/engineering + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/holosignatmos + name = "ATMOS Holofan Projector" + desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions." + id = "holosignatmos" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) + build_path = /obj/item/holosign_creator/atmos + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/holobarrier_med + name = "PENLITE Holobarrier Projector" + desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." + build_type = PROTOLATHE + build_path = /obj/item/holosign_creator/medical + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) + id = "holobarrier_med" + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +///////////////////////////////////////// +////////////////Armour/////////////////// +///////////////////////////////////////// + +/datum/design/reactive_armour + name = "Reactive Armour Shell" + desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user." + id = "reactive_armour" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 10000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) + build_path = /obj/item/reactive_armour_shell + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/knight_armour + name = "Knight Armour" + desc = "A royal knight's favorite garments. Can be trimmed by any friendly person." + id = "knight_armour" + build_type = AUTOLATHE + materials = list(MAT_CATEGORY_RIGID = 10000) + build_path = /obj/item/clothing/suit/armor/riot/knight/greyscale + category = list("Imported") + +/datum/design/knight_helmet + name = "Knight Helmet" + desc = "A royal knight's favorite hat. If you hold it upside down it's actually a bucket." + id = "knight_helmet" + build_type = AUTOLATHE + materials = list(MAT_CATEGORY_RIGID = 5000) + build_path = /obj/item/clothing/head/helmet/knight/greyscale + category = list("Imported") + + + +///////////////////////////////////////// +/////////////Security//////////////////// +///////////////////////////////////////// + +/datum/design/seclite + name = "Seclite" + desc = "A robust flashlight used by security." + id = "seclite" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 2500) + build_path = /obj/item/flashlight/seclite + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/detective_scanner + name = "Forensic Scanner" + desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings." + id = "detective_scanner" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 2500, /datum/material/silver = 2000) + build_path = /obj/item/detective_scanner + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/pepperspray + name = "Pepper Spray" + desc = "Manufactured by UhangInc, used to blind and down an opponent quickly. Printed pepper sprays do not contain reagents." + id = "pepperspray" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) + build_path = /obj/item/reagent_containers/spray/pepper/empty + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/bola_energy + name = "Energy Bola" + desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests." + id = "bola_energy" + build_type = PROTOLATHE + materials = list(/datum/material/silver = 500, /datum/material/plasma = 500, /datum/material/titanium = 500) + build_path = /obj/item/restraints/legcuffs/bola/energy + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/zipties + name = "Zipties" + desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use." + id = "zipties" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 250) + build_path = /obj/item/restraints/handcuffs/cable/zipties + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/evidencebag + name = "Evidence Bag" + desc = "An empty evidence bag." + id = "evidencebag" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 100) + build_path = /obj/item/evidencebag + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/plumbing_rcd + name = "Plumbing Constructor" + id = "plumbing_rcd" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/plastic = 1000) + build_path = /obj/item/construction/plumbing + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + + + +///////////////////////////////////////// +/////////////////Tape//////////////////// +///////////////////////////////////////// + +/datum/design/super_sticky_tape + name = "Super Sticky Tape" + id = "super_sticky_tape" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 3000) + build_path = /obj/item/stack/sticky_tape/super + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/pointy_tape + name = "Pointy Tape" + id = "pointy_tape" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 1500, /datum/material/plastic = 1000) + build_path = /obj/item/stack/sticky_tape/pointy + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + + + +///////////////////////////////////////// +////////////Tackle Gloves//////////////// +///////////////////////////////////////// + +/datum/design/tackle_dolphin + name = "Dolphin Gloves" + id = "tackle_dolphin" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 2500) + build_path = /obj/item/clothing/gloves/tackler/dolphin + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/tackle_rocket + name = "Rocket Gloves" + id = "tackle_rocket" + build_type = PROTOLATHE + materials = list(/datum/material/plasma = 1000, /datum/material/plastic = 2000) + build_path = /obj/item/clothing/gloves/tackler/rocket + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index ce8a46ea879..fa718344e94 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -316,3 +316,13 @@ build_path = /obj/item/stock_parts/subspace/transmitter category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/card_reader + name = "Card Reader" + desc = "A small magnetic card reader, used for devices that take and transmit holocredits." + id = "c-reader" + build_type = PROTOLATHE + materials = list(/datum/material/iron=50, /datum/material/glass=10) + build_path = /obj/item/stock_parts/card_reader + category = list("Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_ALL diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm index 50ff6f4a846..d480ec0a146 100644 --- a/code/modules/research/nanites/nanite_programs.dm +++ b/code/modules/research/nanites/nanite_programs.dm @@ -48,7 +48,7 @@ //Extra settings ///Don't ever override this or I will come to your house and stand menacingly behind a bush - var/list/extra_settings = list() + VAR_FINAL/list/extra_settings = list() //Rules //Rules that automatically manage if the program's active without requiring separate sensor programs diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index b9e9e558813..706a048be49 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -36,15 +36,15 @@ rogue_types = list(/datum/nanite_program/skin_decay) /datum/nanite_program/temperature/check_conditions() - if(host_mob.bodytemperature > (BODYTEMP_NORMAL - 30) && host_mob.bodytemperature < (BODYTEMP_NORMAL + 30)) + if(host_mob.bodytemperature > (host_mob.get_body_temp_normal(apply_change=FALSE) - 30) && host_mob.bodytemperature < (host_mob.get_body_temp_normal(apply_change=FALSE) + 30)) return FALSE return ..() /datum/nanite_program/temperature/active_effect() - if(host_mob.bodytemperature > BODYTEMP_NORMAL) - host_mob.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) - else if(host_mob.bodytemperature < (BODYTEMP_NORMAL + 1)) - host_mob.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + if(host_mob.bodytemperature > host_mob.get_body_temp_normal(apply_change=FALSE)) + host_mob.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, host_mob.get_body_temp_normal(apply_change=FALSE)) + else if(host_mob.bodytemperature < (host_mob.get_body_temp_normal(apply_change=FALSE) + 1)) + host_mob.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, host_mob.get_body_temp_normal(apply_change=FALSE)) /datum/nanite_program/purging name = "Blood Purification" diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm index 01af454c728..d0b9470dc5d 100644 --- a/code/modules/research/nanites/nanite_programs/sensor.dm +++ b/code/modules/research/nanites/nanite_programs/sensor.dm @@ -236,7 +236,6 @@ /datum/nanite_program/sensor/voice name = "Voice Sensor" desc = "Sends a signal when the nanites hear a determined word or sentence." - var/spent = FALSE /datum/nanite_program/sensor/voice/register_extra_settings() . = ..() @@ -256,10 +255,10 @@ if(!sentence.get_value()) return if(inclusive.get_value()) - if(findtextEx(hearing_args[HEARING_RAW_MESSAGE], sentence)) + if(findtext(hearing_args[HEARING_RAW_MESSAGE], sentence.get_value())) send_code() else - if(hearing_args[HEARING_RAW_MESSAGE] == sentence) + if(lowertext(hearing_args[HEARING_RAW_MESSAGE]) == lowertext(sentence.get_value())) send_code() /datum/nanite_program/sensor/species diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index 61928d9e91b..8b8ea83bbf9 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -114,13 +114,13 @@ //Can receive transmissions from a nanite communication remote for customized messages /datum/nanite_program/comm can_trigger = TRUE - var/comm_code = 0 var/comm_message = "" /datum/nanite_program/comm/register_extra_settings() extra_settings[NES_COMM_CODE] = new /datum/nanite_extra_setting/number(0, 0, 9999) /datum/nanite_program/comm/proc/receive_comm_signal(signal_comm_code, comm_message, comm_source) + var/datum/nanite_extra_setting/comm_code = extra_settings[NES_COMM_CODE] if(!activated || !comm_code) return if(signal_comm_code == comm_code) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 352d3010120..ac082f11d6e 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -317,6 +317,12 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi desc = "A large piece of equipment used to open a window into the subspace dimension." custom_materials = list(/datum/material/iron=50) +/obj/item/stock_parts/card_reader + name = "card reader" + icon_state = "card_reader" + desc = "A small magnetic card reader, used for devices that take and transmit holocredits." + custom_materials = list(/datum/material/iron=50, /datum/material/glass=10) + /obj/item/research//Makes testing much less of a pain -Sieve name = "research" icon = 'icons/obj/stock_parts.dmi' diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 19becfff1c3..97b0deda6e6 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -8,7 +8,7 @@ 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", "desttagger", "handlabel", "packagewrap", + design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "c-reader", "desttagger", "salestagger", "handlabel", "packagewrap", "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "bepis", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", "space_heater", "bucket", "sec_rshot", "sec_beanbag_slug", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "rglass", "plasteel", "plastitanium", "plasmaglass", "plasmareinforcedglass", "titaniumglass", "plastitaniumglass", "plastic_knife", "plastic_fork", "plastic_spoon") @@ -57,7 +57,7 @@ display_name = "Basic Medical Equipment" description = "Basic medical tools and equipment." design_ids = list("cybernetic_liver", "cybernetic_heart", "cybernetic_lungs", "scalpel", "circular_saw", "surgicaldrill", "retractor", "cautery", "hemostat", - "syringe", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper") //WaspStation Edit - Surgical Drape Removal + /*"surgical_drapes",*/ "syringe", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault") /////////////////////////Biotech///////////////////////// /datum/techweb_node/biotech @@ -103,7 +103,7 @@ display_name = "Advanced Surgery" description = "When simple medicine doesn't cut it." prereq_ids = list("imp_wt_surgery") - design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo", "surgery_revival","surgery_adv_dissection") + design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo","surgery_adv_dissection") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 4000 @@ -153,7 +153,7 @@ display_name = "Advanced Engineering" description = "Pushing the boundaries of physics, one chainsaw-fist at a time." prereq_ids = list("engineering", "emp_basic") - design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "rcd_loaded", "rpd_loaded") + design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "rcd_loaded", "rpd_loaded", "sheetifier") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -290,9 +290,9 @@ /datum/techweb_node/adv_robotics id = "adv_robotics" display_name = "Advanced Robotics Research" - description = "It can even do the dishes!" - prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop") + description = "Machines using actual neural networks to simulate human lives." + prereq_ids = list("neural_programming", "robotics") + design_ids = list("mmi_posi") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -304,30 +304,21 @@ 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") - design_ids = list("mmi_posi") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 5000 - /datum/techweb_node/cyborg_upg_util id = "cyborg_upg_util" display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cyborgs." - prereq_ids = list("engineering") - design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand") + prereq_ids = list("adv_robotics") + design_ids = list("borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_disablercooler", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 -/datum/techweb_node/cyborg_upg_engi - id = "cyborg_upg_engi" - display_name = "Cyborg Upgrades: Engineering" - description = "Engineering upgrades for cyborgs." - prereq_ids = list("engineering") - design_ids = list("borg_upgrade_rped", "borg_upgrade_circuitapp") +/datum/techweb_node/cyborg_upg_engiminer + id = "cyborg_upg_engiminer" + display_name = "Cyborg Upgrades: Engineering & Mining" + description = "Engineering and Mining upgrades for cyborgs." + prereq_ids = list("adv_engi", "basic_mining") + design_ids = list("borg_upgrade_rped", "borg_upgrade_circuitapp", "borg_upgrade_diamonddrill", "borg_upgrade_lavaproof", "borg_upgrade_holding") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 @@ -340,20 +331,11 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 -/datum/techweb_node/cyborg_upg_combat - id = "cyborg_upg_combat" - display_name = "Cyborg Upgrades: Combat" - description = "Military grade upgrades for cyborgs." - prereq_ids = list("adv_robotics", "adv_engi" , "weaponry") - design_ids = list("borg_upgrade_disablercooler") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) - export_price = 5000 - /datum/techweb_node/ai id = "ai" display_name = "Artificial Intelligence" description = "AI unit research." - prereq_ids = list("robotics", "posibrain") + prereq_ids = list("adv_robotics") design_ids = list("aifixer", "aicore", "safeguard_module", "onehuman_module", "protectstation_module", "quarantine_module", "oxygen_module", "freeform_module", "reset_module", "purge_module", "remove_module", "freeformcore_module", "asimov_module", "paladin_module", "tyrant_module", "overlord_module", "corporate_module", "default_module", "borg_ai_control", "mecha_tracking_ai_control", "aiupload", "intellicard") @@ -619,7 +601,7 @@ description = "Unlocks new RCD designs." design_ids = list("rcd_upgrade_silo_link") prereq_ids = list("rcd_upgrade", "bluespace_travel") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 /////////////////////////weaponry tech///////////////////////// @@ -1154,29 +1136,28 @@ hidden = TRUE experimental = TRUE -/datum/techweb_node/sticky_basic - id = "sticky_basic" - display_name = "Basic Sticky Technology" - description = "The only thing left to do after researching this tech is to start printing out a bunch of 'kick me' signs." - prereq_ids = list("base") - design_ids = list("sticky_tape") +/datum/techweb_node/sticky_advanced + id = "sticky_advanced" + display_name = "Advanced Sticky Technology" + description = "Taking a good joke too far? Nonsense!" + design_ids = list("super_sticky_tape", "pointy_tape") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 2500 hidden = TRUE experimental = TRUE -// Can be researched after getting the basic sticky technology from the BEPIS major reward -/datum/techweb_node/sticky_advanced - id = "sticky_advanced" - display_name = "Advanced Sticky Technology" - description = "Taking a good joke too far? Nonsense!" - prereq_ids = list("sticky_basic") - design_ids = list("super_sticky_tape", "pointy_tape") +/datum/techweb_node/tackle_advanced + id = "tackle_advanced" + display_name = "Advanced Grapple Technology" + description = "Nanotrasen would like to remind its researching staff that it is never acceptable to \"glomp\" your coworkers, and further \"scientific trials\" on the subject \ + will no longer be accepted in its academic journals." + design_ids = list("tackle_dolphin", "tackle_rocket") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 2500 hidden = TRUE + experimental = TRUE //Helpers for debugging/balancing the techweb in its entirety! /proc/total_techweb_exports() diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index be3276bbeb2..a84022949e9 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -185,7 +185,7 @@ alert_type = /obj/screen/alert/status_effect/bloodchill /datum/status_effect/bloodchill/on_apply() - owner.add_movespeed_modifier("bloodchilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3) + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill) return ..() /datum/status_effect/bloodchill/tick() @@ -193,7 +193,7 @@ owner.adjustFireLoss(2) /datum/status_effect/bloodchill/on_remove() - owner.remove_movespeed_modifier("bloodchilled") + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill) /datum/status_effect/bonechill id = "bonechill" @@ -201,7 +201,7 @@ alert_type = /obj/screen/alert/status_effect/bonechill /datum/status_effect/bonechill/on_apply() - owner.add_movespeed_modifier("bonechilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3) + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill) return ..() /datum/status_effect/bonechill/tick() @@ -211,8 +211,7 @@ owner.adjust_bodytemperature(-10) /datum/status_effect/bonechill/on_remove() - owner.remove_movespeed_modifier("bonechilled") - + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill) /obj/screen/alert/status_effect/bonechill name = "Bonechilled" desc = "You feel a shiver down your spine after hearing the haunting noise of bone rattling. You'll move slower and get frostbite for a while!" @@ -366,11 +365,11 @@ datum/status_effect/rebreathing/tick() duration = 30 /datum/status_effect/tarfoot/on_apply() - owner.add_movespeed_modifier(MOVESPEED_ID_TARFOOT, update=TRUE, priority=100, multiplicative_slowdown=0.5, blacklisted_movetypes=(FLYING|FLOATING)) + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot) return ..() /datum/status_effect/tarfoot/on_remove() - owner.remove_movespeed_modifier(MOVESPEED_ID_TARFOOT) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot) /datum/status_effect/spookcookie id = "spookcookie" @@ -471,7 +470,7 @@ datum/status_effect/rebreathing/tick() colour = "orange" /datum/status_effect/stabilized/orange/tick() - var/body_temperature_difference = BODYTEMP_NORMAL - owner.bodytemperature + var/body_temperature_difference = owner.get_body_temp_normal(apply_change=FALSE) - owner.bodytemperature owner.adjust_bodytemperature(min(5,body_temperature_difference)) return ..() @@ -616,7 +615,7 @@ datum/status_effect/stabilized/blue/on_remove() else if(istype(O, /obj/item/stack/sheet/hairlesshide)) to_chat(owner, "[linked_extract] kept your hands wet! It wets [O]!") var/obj/item/stack/sheet/hairlesshide/HH = O - new /obj/item/stack/sheet/wetleather(get_turf(HH), HH.amount) + new /obj/item/stack/sheet/wethide(get_turf(HH), HH.amount) qdel(HH) ..() @@ -684,15 +683,15 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/sepia/tick() if(prob(50) && mod > -1) mod-- - owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, override = TRUE, update=TRUE, priority=100, multiplicative_slowdown=-0.5, blacklisted_movetypes=(FLYING|FLOATING)) + owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = -0.5) else if(mod < 1) mod++ // yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly - owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, override = TRUE, update=TRUE, priority=100, multiplicative_slowdown=0, blacklisted_movetypes=(FLYING|FLOATING)) + owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 0) return ..() /datum/status_effect/stabilized/sepia/on_remove() - owner.remove_movespeed_modifier(MOVESPEED_ID_SEPIA) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia) /datum/status_effect/stabilized/cerulean id = "stabilizedcerulean" @@ -751,11 +750,12 @@ datum/status_effect/stabilized/blue/on_remove() colour = "red" /datum/status_effect/stabilized/red/on_apply() - owner.ignore_slowdown("slimestatus") - return ..() + . = ..() + owner.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod) /datum/status_effect/stabilized/red/on_remove() - owner.unignore_slowdown("slimestatus") + owner.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod) + return ..() /datum/status_effect/stabilized/green id = "stabilizedgreen" @@ -900,7 +900,7 @@ datum/status_effect/stabilized/blue/on_remove() colour = "light pink" /datum/status_effect/stabilized/lightpink/on_apply() - owner.add_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS, update=TRUE, priority=100, multiplicative_slowdown=-0.5, blacklisted_movetypes=(FLYING|FLOATING)) + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink) return ..() /datum/status_effect/stabilized/lightpink/tick() @@ -911,7 +911,7 @@ datum/status_effect/stabilized/blue/on_remove() return ..() /datum/status_effect/stabilized/lightpink/on_remove() - owner.remove_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink) /datum/status_effect/stabilized/adamantine id = "stabilizedadamantine" diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 40fc43bde22..2b788e4ccc4 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -49,7 +49,7 @@ Slimecrossing Weapons return ..() //Adamantine shield - Chilling Adamantine -/obj/item/twohanded/required/adamantineshield +/obj/item/shield/adamantineshield name = "adamantine shield" desc = "A gigantic shield made of solid adamantium." icon = 'icons/obj/slimecrossing.dmi' @@ -59,12 +59,16 @@ Slimecrossing Weapons armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) slot_flags = ITEM_SLOT_BACK block_chance = 75 + force = 0 throw_range = 1 //How far do you think you're gonna throw a solid crystalline shield...? throw_speed = 2 - force_wielded = 15 //Heavy, but hard to wield. attack_verb = list("bashed","pounded","slammed") item_flags = SLOWS_WHILE_IN_HAND +/obj/item/shield/adamantineshield/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_wielded=15) + //Bloodchiller - Chilling Green /obj/item/gun/magic/bloodchill name = "blood chiller" diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index ce38f338bc6..c93bf0b4d13 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -301,7 +301,7 @@ Burning extracts: /obj/item/slimecross/burning/adamantine/do_effect(mob/user) user.visible_message("[src] crystallizes into a large shield!") - new /obj/item/twohanded/required/adamantineshield(get_turf(user)) + new /obj/item/shield/adamantineshield(get_turf(user)) ..() /obj/item/slimecross/burning/rainbow diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index a727e27dcae..6eead050c38 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -174,7 +174,7 @@ Industrial extracts: colour = "oil" effect_desc = "Produces IEDs." plasmarequired = 4 - itempath = /obj/item/grenade/iedcasing + itempath = /obj/item/grenade/iedcasing/spawned /obj/item/slimecross/industrial/black //What does this have to do with black slimes? No clue! Fun, though colour = "black" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 3853f076cdb..46b6713bf1b 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -932,7 +932,7 @@ return if(C.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) to_chat(user, "The [C] is already fireproof!") - return ..() + return to_chat(user, "You slather the blue gunk over the [C], fireproofing it.") C.name = "fireproofed [C.name]" C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index a62b462c551..3d76787edea 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -130,7 +130,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/toggle/labcoat shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/syndicate/alt back = /obj/item/storage/backpack r_pocket = /obj/item/gun/ballistic/automatic/pistol diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index bc3be349e7d..5f0a66a6e6a 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -38,15 +38,40 @@ /obj/structure/lavaland/ash_walker/proc/consume() for(var/mob/living/H in view(src, 1)) //Only for corpse right next to/on same tile if(H.stat) - visible_message("Serrated tendrils eagerly pull [H] to [src], tearing the body apart as its blood seeps over the eggs.") - playsound(get_turf(src),'sound/magic/demon_consume.ogg', 100, TRUE) for(var/obj/item/W in H) if(!H.dropItemToGround(W)) qdel(W) + if(issilicon(H)) //no advantage to sacrificing borgs... + H.gib() + visible_message("Serrated tendrils eagerly pull [H] apart, but find nothing of interest.") + return + + if(H.mind?.has_antag_datum(/datum/antagonist/ashwalker) && (H.key || H.get_ghost(FALSE, TRUE))) //special interactions for dead lava lizards with ghosts attached + visible_message("Serrated tendrils carefully pull [H] to [src], absorbing the body and creating it anew.") + var/datum/mind/deadmind + if(H.key) + deadmind = H + else + deadmind = H.get_ghost(FALSE, TRUE) + to_chat(deadmind, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly.
Your memories will remain intact in your new body, as your soul is being salvaged") + SEND_SOUND(deadmind, sound('sound/magic/enter_blood.ogg',volume=100)) + addtimer(CALLBACK(src, .proc/remake_walker, H.mind, H.real_name), 20 SECONDS) + new /obj/effect/gibspawner/generic(get_turf(H)) + qdel(H) + return + if(ismegafauna(H)) meat_counter += 20 else meat_counter++ + visible_message("Serrated tendrils eagerly pull [H] to [src], tearing the body apart as its blood seeps over the eggs.") + playsound(get_turf(src),'sound/magic/demon_consume.ogg', 100, TRUE) + var/deliverykey = H.fingerprintslast //key of whoever brought the body + var/mob/living/deliverymob = get_mob_by_key(deliverykey) //mob of said key + //there is a 40% chance that the Lava Lizard unlocks their respawn with each sacrifice + if(deliverymob && (deliverymob.mind?.has_antag_datum(/datum/antagonist/ashwalker)) && (deliverykey in ashies.players_spawned) && (prob(40))) + to_chat(deliverymob, "The Necropolis is pleased with your sacrifice. You feel confident your existence after death is secure.") + ashies.players_spawned -= deliverykey H.gib() obj_integrity = min(obj_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril for(var/mob/living/L in view(src, 5)) @@ -55,6 +80,17 @@ else SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "oogabooga", /datum/mood_event/sacrifice_bad) +/obj/structure/lavaland/ash_walker/proc/remake_walker(var/datum/mind/oldmind, var/oldname) + var/mob/living/carbon/human/M = new /mob/living/carbon/human(get_step(loc, pick(GLOB.alldirs))) + M.set_species(/datum/species/lizard/ashwalker) + M.real_name = oldname + M.underwear = "Nude" + M.update_body() + oldmind.transfer_to(M) + M.mind.grab_ghost() + to_chat(M, "You have been pulled back from beyond the grave, with a new body and renewed purpose. Glory to the Necropolis!") + playsound(get_turf(M),'sound/magic/exit_blood.ogg', 100, TRUE) + /obj/structure/lavaland/ash_walker/proc/spawn_mob() if(meat_counter >= ASH_WALKER_SPAWN_THRESHOLD) new /obj/effect/mob_spawn/human/ash_walker(get_step(loc, pick(GLOB.alldirs)), ashies) diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index ef8a53ea4c5..82e34607e02 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -264,6 +264,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) return /obj/structure/stone_tile/Crossed(atom/movable/AM) + . = ..() if(falling || fallen) return var/turf/T = get_turf(src) diff --git a/code/modules/ruins/spaceruin_code/forgottenship.dm b/code/modules/ruins/spaceruin_code/forgottenship.dm new file mode 100644 index 00000000000..3b0b5b172a8 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/forgottenship.dm @@ -0,0 +1,128 @@ +// forgottenship ruin +GLOBAL_VAR_INIT(fscpassword, generate_password()) + +/proc/generate_password() + return "[pick(GLOB.phonetic_alphabet)] [rand(1000,9999)]" + +/////////// forgottenship objects + +/obj/machinery/door/password/voice/sfc + name = "Voice-activated Vault door" + desc = "You'll need special syndicate passcode to open this one." +/obj/machinery/door/password/voice/sfc/Initialize(mapload) + . = ..() + password = "[GLOB.fscpassword]" + +/////////// forgottenship lore + +/obj/item/paper/fluff/ruins/forgottenship/password + name = "Old pamphlet" + +/obj/item/paper/fluff/ruins/forgottenship/password/Initialize(mapload) + . = ..() + info = "Welcome to most advanced cruiser owned by Cyber Sun Industries!
You might notice, that this cruiser is equipped with 12 prototype laser turrets making any hostile boarding attempts futile.
Other facilities built on the ship are: Simple atmospheric system, Camera system with built-in X-ray visors and Safety module, enabling emergency engines in case of... you know, emergency.
Emergency system will bring you to nearest syndicate pod containing everything needed for human life.

In case of emergency, you must remember the pod-door activation code - [GLOB.fscpassword]

Cyber Sun Industries (C) 2484." + icon_state = "paper_words" + item_state = "paper" + +/obj/item/paper/fluff/ruins/forgottenship/powerissues + name = "Power issues" + info = "Welcome to battle cruiser SCSBC-12!
Our most advanced systems allow you to fly in space and never worry about power issues!
However, emergencies occur, and in case of power loss, you must enable emergency generator using uranium as fuel and enable turrets in bridge afterwards.

REMEMBER! CYBERSUN INDUSTRIES ARE NOT RESPONSIBLE FOR YOUR DEATH OR SHIP LOSS WHEN TURRETS ARE DISABLED!

Cyber Sun Industries (C) 2484." + +/obj/item/paper/fluff/ruins/forgottenship/missionobj + name = "Mission objectives" + info = "Greetings, operatives. You are assigned to SCSBC-12(Syndicate Cyber Sun Battle Cruiser 12) to protect our high-ranking officer while he is on his way to next outpost. While you are travelling, he is the captain of this ship and you must obey his orders.

Remember, disobeying high-ranking officer orders is a reason for termination." + +/////////// forgottenship items +/obj/item/disk/surgery/forgottenship + name = "Advanced Surgery Disk" + desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console." + surgeries = list(/datum/surgery/advanced/lobotomy, /datum/surgery/advanced/bioware/vein_threading, /datum/surgery/advanced/bioware/nerve_splicing) + +/obj/structure/fluff/empty_sleeper/syndicate/captain + icon_state = "sleeper_s-open" + +/obj/structure/fluff/empty_sleeper/syndicate/captain/ComponentInitialize() + . = ..() + AddComponent(/datum/component/gps, "Old Encrypted Signal") + +/////////// forgottenship areas + +/area/ruin/space/has_grav/syndicate_forgotten_ship + name = "Syndicate Forgotten Ship" + icon_state = "syndie-ship" + +/area/ruin/space/has_grav/syndicate_forgotten_cargopod + name = "Syndicate Forgotten Cargo pod" + icon_state = "syndie-ship" + +/area/ruin/space/has_grav/powered/syndicate_forgotten_vault + name = "Syndicate Forgotten Vault" + icon_state = "syndie-ship" + noteleport = TRUE + + //Cybersun hardsuit + +/obj/item/clothing/head/helmet/space/hardsuit/cybersun + name = "Cybersun hardsuit helmet" + desc = "Prototype hardsuit helmet with experimental armor plates, protecting from laser-based weapons very well, while giving limited protection against anything else." + icon_state = "cybersun" + item_state = "cybersun" + hardsuit_type = "cybersun" + armor = list("melee" = 25, "bullet" = 25, "laser" = 70, "energy" = 50, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 60, "acid" = 60) + strip_delay = 600 + actions_types = list() + + +/obj/item/clothing/suit/space/hardsuit/cybersun + icon_state = "cybersun" + item_state = "cybersun" + hardsuit_type = "cybersun" + name = "Cybersun hardsuit" + desc = "Prototype hardsuit with experimental armor plates, protecting from laser-based weapons very well, while giving limited protection against anything else. Requires the user to activate the inner mechanism in order to unequip it, making it really difficult to take it off from somebody else." + armor = list("melee" = 25, "bullet" = 25, "laser" = 70, "energy" = 50, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 60, "acid" = 60) + strip_delay = 600 + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cybersun + actions_types = list(/datum/action/item_action/toggle_helmet) + jetpack = /obj/item/tank/jetpack/suit + +//Special NT NPCs + +/mob/living/simple_animal/hostile/nanotrasen/ranged/assault + name = "Nanotrasen Assault Officer" + desc = "Nanotrasen Assault Officer. Contact CentCom if you saw him on your station. Prepare to die, if you've been found near Syndicate property." + icon_state = "nanotrasenrangedassault" + icon_living = "nanotrasenrangedassault" + icon_dead = null + icon_gib = "syndicate_gib" + ranged = TRUE + rapid = 4 + rapid_fire_delay = 1 + rapid_melee = 1 + retreat_distance = 2 + minimum_distance = 4 + casingtype = /obj/item/ammo_casing/c46x30mm + projectilesound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' + loot = list(/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier) + +/mob/living/simple_animal/hostile/nanotrasen/elite + name = "Nanotrasen Elite Assault Officer" + desc = "Pray for your life, syndicate. Run while you can." + icon = 'icons/mob/simple_human.dmi' + icon_state = "nanotrasen_ert" + icon_living = "nanotrasen_ert" + maxHealth = 150 + health = 150 + melee_damage_lower = 13 + melee_damage_upper = 18 + ranged = TRUE + rapid = 3 + rapid_fire_delay = 5 + rapid_melee = 3 + retreat_distance = 0 + minimum_distance = 1 + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + projectiletype = /obj/projectile/beam/laser + projectilesound = 'sound/weapons/pulse.ogg' + loot = list(/obj/effect/gibspawner/human) + faction = list(ROLE_DEATHSQUAD) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 7b304832b37..e2035244bff 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -256,11 +256,6 @@ All ShuttleMove procs go here // atmosinit() calls update_icon(), so we don't need to call it update_icon() -/obj/machinery/atmospherics/pipe/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - var/turf/T = loc - hide(T.intact) - /obj/machinery/navbeacon/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) . = ..() GLOB.navbeacons["[z]"] -= src @@ -268,8 +263,7 @@ All ShuttleMove procs go here /obj/machinery/navbeacon/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() - var/turf/T = loc - hide(T.intact) + if(codes["patrol"]) if(!GLOB.navbeacons["[z]"]) GLOB.navbeacons["[z]"] = list() @@ -278,12 +272,6 @@ All ShuttleMove procs go here GLOB.deliverybeacons += src GLOB.deliverybeacontags += location -/obj/machinery/power/terminal/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - var/turf/T = src.loc - if(level==1) - hide(T.intact) - /************************************Item move procs************************************/ /obj/item/storage/pod/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) @@ -338,19 +326,12 @@ All ShuttleMove procs go here if(. & MOVE_AREA) . |= MOVE_CONTENTS -/obj/structure/disposalpipe/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - update() - /obj/structure/cable/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) . = ..() cut_cable_from_powernet(FALSE) /obj/structure/cable/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() - var/turf/T = loc - if(level==1) - hide(T.intact) connect_wire(TRUE) propogate_if_no_network() diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 90ac6ac5d54..11c438b622d 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -233,7 +233,7 @@ if(!isliving(mover)) //No stowaways return FALSE -/obj/machinery/scanner_gate/luxury_shuttle/Crossed(atom/movable/AM) +/obj/machinery/scanner_gate/luxury_shuttle/auto_scan(atom/movable/AM) return /obj/machinery/scanner_gate/luxury_shuttle/attackby(obj/item/W, mob/user, params) diff --git a/code/modules/spells/spell_types/blind.dm b/code/modules/spells/spell_types/blind.dm new file mode 100644 index 00000000000..f2745e29229 --- /dev/null +++ b/code/modules/spells/spell_types/blind.dm @@ -0,0 +1,34 @@ +/obj/effect/proc_holder/spell/pointed/trigger/blind + name = "Blind" + desc = "This spell temporarily blinds a single target." + school = "transmutation" + charge_max = 300 + clothes_req = FALSE + invocation = "STI KALY" + invocation_type = "whisper" + message = "Your eyes cry out in pain!" + cooldown_min = 50 //12 deciseconds reduction per rank + starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind", "/obj/effect/proc_holder/spell/targeted/genetic/blind") + ranged_mousepointer = 'icons/effects/blind_target.dmi' + action_icon_state = "blind" + base_icon_state = "blind" + active_msg = "You prepare to blind a target..." + +/obj/effect/proc_holder/spell/targeted/inflict_handler/blind + amt_eye_blind = 10 + amt_eye_blurry = 20 + sound = 'sound/magic/blind.ogg' + +/obj/effect/proc_holder/spell/targeted/genetic/blind + mutations = list(BLINDMUT) + duration = 300 + charge_max = 400 // needs to be higher than the duration or it'll be permanent + sound = 'sound/magic/blind.ogg' + +/obj/effect/proc_holder/spell/pointed/trigger/blind/intercept_check(mob/user, atom/target) + if(!..()) + return FALSE + if(!isliving(target)) + to_chat(user, "You can only blind living beings!") + return FALSE + return TRUE diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 05b11dc4bf8..9e59a83e364 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -5,7 +5,7 @@ include_user = TRUE range = -1 clothes_req = FALSE - item_type = /obj/item/twohanded/pitchfork/demonic + item_type = /obj/item/pitchfork/demonic school = "conjuration" charge_max = 150 @@ -15,10 +15,10 @@ action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater - item_type = /obj/item/twohanded/pitchfork/demonic/greater + item_type = /obj/item/pitchfork/demonic/greater /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended - item_type = /obj/item/twohanded/pitchfork/demonic/ascended + item_type = /obj/item/pitchfork/demonic/ascended /obj/effect/proc_holder/spell/targeted/conjure_item/violin item_type = /obj/item/instrument/violin/golden diff --git a/code/modules/spells/spell_types/pointed.dm b/code/modules/spells/spell_types/pointed.dm new file mode 100644 index 00000000000..52db062aec1 --- /dev/null +++ b/code/modules/spells/spell_types/pointed.dm @@ -0,0 +1,75 @@ +/obj/effect/proc_holder/spell/pointed + name = "pointed spell" + ranged_mousepointer = 'icons/effects/throw_target.dmi' + /// Message showing to the spell owner upon deactivating pointed spell. + var/deactive_msg = "You dispel the magic..." + /// Message showing to the spell owner upon activating pointed spell. + var/active_msg = "You prepare to use the spell on a target..." + /// Default icon for the pointed spell, used for active/inactive states switching. + var/base_icon_state = "projectile" + +/obj/effect/proc_holder/spell/pointed/Click() + var/mob/living/user = usr + if(!istype(user)) + return + var/msg + if(!can_cast(user)) + msg = "You can no longer cast [name]!" + remove_ranged_ability(msg) + return + if(active) + msg = "[deactive_msg]" + remove_ranged_ability(msg) + on_deactivation(user) + else + msg = "[active_msg] Left-click to activate spell on a target!" + add_ranged_ability(user, msg, TRUE) + on_activation(user) + +/** + * + * What happens upon pointed spell activation. + * + * user mob The mob interacting owning the spell. + * + **/ +/obj/effect/proc_holder/spell/pointed/proc/on_activation(mob/user) + return + + /** + * + * What happens upon pointed spell deactivation. + * + * user mob The mob interacting owning the spell. + * + **/ +/obj/effect/proc_holder/spell/pointed/proc/on_deactivation(mob/user) + return + +/obj/effect/proc_holder/spell/pointed/update_icon() + if(!action) + return + action.button_icon_state = "[base_icon_state][active]" + action.UpdateButtonIcon() + +/obj/effect/proc_holder/spell/pointed/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return FALSE + if(!intercept_check(ranged_ability_user, target)) + return FALSE + if(!cast_check(user = ranged_ability_user)) + return FALSE + perform(list(target), user = ranged_ability_user) + remove_ranged_ability() + return TRUE + + /** + * + * Specific spell checks for InterceptClickOn() targets. + * + * user mob The mob using the ranged spell via intercept. + * target atom The atom being targeted by the spell via intercept. + * + **/ +/obj/effect/proc_holder/spell/pointed/proc/intercept_check(mob/user, atom/target) + return TRUE diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index aaa9c2fc8ef..2c3254b8daf 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -102,6 +102,7 @@ busy = FALSE /obj/effect/cross_action/spacetime_dist/Crossed(atom/movable/AM) + . = ..() if(!busy) walk_link(AM) diff --git a/code/modules/spells/spell_types/trigger.dm b/code/modules/spells/spell_types/trigger.dm index 681d709a1ea..2fc15475916 100644 --- a/code/modules/spells/spell_types/trigger.dm +++ b/code/modules/spells/spell_types/trigger.dm @@ -1,30 +1,26 @@ -/obj/effect/proc_holder/spell/targeted/trigger +/obj/effect/proc_holder/spell/pointed/trigger name = "Trigger" desc = "This spell triggers another spell or a few." - var/list/linked_spells = list() //those are just referenced by the trigger spell and are unaffected by it directly var/list/starting_spells = list() //those are added on New() to contents from default spells and are deleted when the trigger spell is deleted to prevent memory leaks -/obj/effect/proc_holder/spell/targeted/trigger/Initialize() +/obj/effect/proc_holder/spell/pointed/trigger/Initialize() . = ..() - for(var/spell in starting_spells) var/spell_to_add = text2path(spell) new spell_to_add(src) //should result in adding to contents, needs testing -/obj/effect/proc_holder/spell/targeted/trigger/Destroy() +/obj/effect/proc_holder/spell/pointed/trigger/Destroy() for(var/spell in contents) qdel(spell) linked_spells = null starting_spells = null return ..() -/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets,mob/user = usr) +/obj/effect/proc_holder/spell/pointed/trigger/cast(list/targets, mob/user = usr) playMagSound() for(var/mob/living/target in targets) for(var/obj/effect/proc_holder/spell/spell in contents) spell.perform(list(target),0) for(var/obj/effect/proc_holder/spell/spell in linked_spells) spell.perform(list(target),0) - - return diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index 51cb0faaf35..7dd892c1b6d 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -227,41 +227,12 @@ summon_type = list(/mob/living/simple_animal/hostile/netherworld) cast_sound = 'sound/magic/summonitems_generic.ogg' -/obj/effect/proc_holder/spell/targeted/trigger/blind - name = "Blind" - desc = "This spell temporarily blinds a single target." - - school = "transmutation" - charge_max = 300 - clothes_req = FALSE - invocation = "STI KALY" - invocation_type = "whisper" - message = "Your eyes cry out in pain!" - cooldown_min = 50 //12 deciseconds reduction per rank - - starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind") - - action_icon_state = "blind" - /obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult name = "Summon Creatures (DANGEROUS)" clothes_req = TRUE charge_max = 5000 summon_amt = 2 - - -/obj/effect/proc_holder/spell/targeted/inflict_handler/blind - amt_eye_blind = 10 - amt_eye_blurry = 20 - sound = 'sound/magic/blind.ogg' - -/obj/effect/proc_holder/spell/targeted/genetic/blind - mutations = list(BLINDMUT) - duration = 300 - charge_max = 400 // needs to be higher than the duration or it'll be permanent - sound = 'sound/magic/blind.ogg' - /obj/effect/proc_holder/spell/aoe_turf/repulse name = "Repulse" desc = "This spell throws everything around the user away." diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 9a20badbfb7..2d7efe42486 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -142,15 +142,15 @@ if(WEST) return locate(x - 7,y,z) if(EAST) - return locate(x + 4,y,z) + return locate(x + 7,y,z) return get_turf(src) /obj/machinery/bsa/full/proc/get_back_turf() switch(dir) if(WEST) - return locate(x + 4,y,z) + return locate(x + 5,y,z) if(EAST) - return locate(x - 6,y,z) + return locate(x - 5,y,z) return get_turf(src) /obj/machinery/bsa/full/proc/get_target_turf() @@ -167,11 +167,12 @@ switch(cannon_direction) if(WEST) setDir(WEST) - pixel_x = -192 top_layer.icon_state = "top_west" icon_state = "cannon_west" if(EAST) setDir(EAST) + pixel_x = -128 + bound_x = -128 top_layer.icon_state = "top_east" icon_state = "cannon_east" add_overlay(top_layer) diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index e040ea422a4..a66b07ec039 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -248,8 +248,6 @@ else return ..() - - /obj/machinery/dna_vault/proc/upgrade(mob/living/carbon/human/H,upgrade_type) if(!(upgrade_type in power_lottery[H])) return @@ -279,7 +277,7 @@ ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, "dna_vault") if(VAULT_SPEED) to_chat(H, "Your legs feel faster.") - H.add_movespeed_modifier(MOVESPEED_ID_DNA_VAULT, update=TRUE, priority=100, multiplicative_slowdown=-0.4, blacklisted_movetypes=(FLYING|FLOATING)) + H.add_movespeed_modifier(/datum/movespeed_modifier/dna_vault_speedup) if(VAULT_QUICK) to_chat(H, "Your arms move as fast as lightning.") H.next_move_modifier = 0.5 diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 4d9827a52b5..b357e57ef54 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -9,7 +9,7 @@ /datum/surgery_step/sever_limb name = "sever limb" - implements = list(/obj/item/shears = 300, TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) + implements = list(/obj/item/shears = 300, TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) time = 64 experience_given = MEDICAL_SKILL_ORGAN_FIX diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 3119ad91b29..a99496f036e 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -90,14 +90,16 @@ var/mob/living/carbon/human/H = C if(HAS_TRAIT(C, TRAIT_LIMBATTACHMENT)) if(!H.get_bodypart(body_zone) && !animal_origin) + user.temporarilyRemoveItemFromInventory(src, TRUE) + if(!attach_limb(C)) + to_chat(user, "[H]'s body rejects [src]!") + forceMove(H.loc) if(H == user) H.visible_message("[H] jams [src] into [H.p_their()] empty socket!",\ "You force [src] into your empty socket, and it locks into place!") else H.visible_message("[user] jams [src] into [H]'s empty socket!",\ "[user] forces [src] into your empty socket, and it locks into place!") - user.temporarilyRemoveItemFromInventory(src, TRUE) - attach_limb(C) return ..() @@ -349,7 +351,6 @@ if(NO_BONES in S.species_traits) bone_status = BONE_FLAG_NO_BONES - fix_bone() else bone_status = BONE_FLAG_NORMAL diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 6f6695fbaf5..0d4d80c1ffd 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -17,7 +17,7 @@ var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST) affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50)) //Damage the chest based on limb's existing damage - C.visible_message("[C]'s [src.name] has been violently dismembered!") + C.visible_message("[C]'s [src.name] is violently dismembered!") C.emote("scream") SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) drop_limb() @@ -90,8 +90,11 @@ C.bodyparts -= src if(held_index) - C.dropItemToGround(owner.get_item_for_held_index(held_index), 1) - C.hand_bodyparts[held_index] = null + if(C.hand_bodyparts[held_index] == src) + // We only want to do this if the limb being removed is the active hand part. + // This catches situations where limbs are "hot-swapped" such as augmentations and roundstart prosthetics. + C.dropItemToGround(owner.get_item_for_held_index(held_index), 1) + C.hand_bodyparts[held_index] = null owner = null @@ -259,23 +262,25 @@ /obj/item/bodypart/proc/replace_limb(mob/living/carbon/C, special) if(!istype(C)) return - var/obj/item/bodypart/O = C.get_bodypart(body_zone) + var/obj/item/bodypart/O = C.get_bodypart(body_zone) //needs to happen before attach because multiple limbs in same zone breaks helpers + if(!attach_limb(C, special))//we can attach this limb and drop the old after because of our robust bodyparts system. you know, just for a sec. + return if(O) O.drop_limb(1) - attach_limb(C, special) /obj/item/bodypart/head/replace_limb(mob/living/carbon/C, special) if(!istype(C)) return var/obj/item/bodypart/head/O = C.get_bodypart(body_zone) + if(!attach_limb(C, special)) + return if(O) - if(!special) - return - else - O.drop_limb(1) - attach_limb(C, special) + O.drop_limb(1) /obj/item/bodypart/proc/attach_limb(mob/living/carbon/C, special) + if(SEND_SIGNAL(C, COMSIG_LIVING_ATTACH_LIMB, src, special) & COMPONENT_NO_ATTACH) + return FALSE + . = TRUE moveToNullspace() owner = C C.bodyparts += src @@ -312,7 +317,10 @@ C.update_mobility() -/obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) +/obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special = FALSE, abort = FALSE) + . = ..() + if(!.) + return . //Transfer some head appearance vars over if(brain) if(brainmob) @@ -350,19 +358,22 @@ AP.Grant(C) break - ..() - + C.updatehealth() + C.update_body() + C.update_hair() + C.update_damage_overlays() + C.update_mobility() //Regenerates all limbs. Returns amount of limbs regenerated -/mob/living/proc/regenerate_limbs(noheal = FALSE, list/excluded_limbs = list()) - SEND_SIGNAL(src, COMSIG_LIVING_REGENERATE_LIMBS, noheal, excluded_limbs) +/mob/living/proc/regenerate_limbs(noheal = FALSE, list/excluded_zones = list()) + SEND_SIGNAL(src, COMSIG_LIVING_REGENERATE_LIMBS, noheal, excluded_zones) -/mob/living/carbon/regenerate_limbs(noheal = FALSE, list/excluded_limbs = list()) +/mob/living/carbon/regenerate_limbs(noheal = FALSE, list/excluded_zones = list()) . = ..() - var/list/limb_list = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - if(length(excluded_limbs)) - limb_list -= excluded_limbs - for(var/Z in limb_list) + var/list/zone_list = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) + if(length(excluded_zones)) + zone_list -= excluded_zones + for(var/Z in zone_list) . += regenerate_limb(Z, noheal) /mob/living/proc/regenerate_limb(limb_zone, noheal) @@ -371,7 +382,7 @@ /mob/living/carbon/regenerate_limb(limb_zone, noheal) var/obj/item/bodypart/L if(get_bodypart(limb_zone)) - return 0 + return FALSE L = newBodyPart(limb_zone, 0, 0) if(L) if(!noheal) @@ -389,5 +400,7 @@ if(head) head.mouth = FALSE - L.attach_limb(src, 1) - return 1 + if(!L.attach_limb(src, 1)) + qdel(L) + return FALSE + return TRUE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index c4eec01c521..d5d700c93e8 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -149,6 +149,8 @@ if(S.hair_color) if(S.hair_color == "mutcolor") facial_hair_color = H.dna.features["mcolor"] + else if(hair_color == "fixedmutcolor") + facial_hair_color = "#[S.fixed_mut_color]" else facial_hair_color = S.hair_color else @@ -164,6 +166,8 @@ if(S.hair_color) if(S.hair_color == "mutcolor") hair_color = H.dna.features["mcolor"] + else if(hair_color == "fixedmutcolor") + hair_color = "#[S.fixed_mut_color]" else hair_color = S.hair_color else diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index ddc02296729..91c47dac98a 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -316,7 +316,7 @@ body_plan_changed = TRUE O.drop_limb(1) qdel(O) - N.attach_limb(src) + N.attach_limb(src) //no sanity for if this fails here because we just dropped out a limb of the same zone, SHOULD be okay if(body_plan_changed && ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) diff --git a/code/modules/surgery/bone_repair.dm b/code/modules/surgery/bone_repair.dm index a9c030edee0..c6a491e1a36 100644 --- a/code/modules/surgery/bone_repair.dm +++ b/code/modules/surgery/bone_repair.dm @@ -22,9 +22,9 @@ if(target_zone == BODY_ZONE_HEAD) user.visible_message("[user] begins to set [target]'s skull with [tool]...", "You begin to set [target]'s skull with [tool]...") else - user.visible_message("[user] begins to set the bones in [target]'s [target_zone] with [tool]...", "You begin setting the bones in [target]'s [target_zone] with [tool]...") + user.visible_message("[user] begins to set the bones in [target]'s [parse_zone(target_zone)] with [tool]...", "You begin setting the bones in [target]'s [parse_zone(target_zone)] with [tool]...") /datum/surgery_step/set_bone/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] successfully sets the bones in [target]'s [target_zone]!", "You successfully set the bones in [target]'s [target_zone].") + user.visible_message("[user] successfully sets the bones in [target]'s [parse_zone(target_zone)]!", "You successfully set the bones in [target]'s [parse_zone(target_zone)].") surgery.operated_bodypart.fix_bone() return TRUE diff --git a/code/modules/surgery/healing.dm b/code/modules/surgery/healing.dm index e6f58159f5f..776c6389794 100644 --- a/code/modules/surgery/healing.dm +++ b/code/modules/surgery/healing.dm @@ -48,12 +48,11 @@ "[user] attempts to patch some of [target]'s [woundtype].") /datum/surgery_step/heal/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) - if(..()) - experience_given = min(experience_given+1,PER_ITERATION_XP_CAP) - while((brutehealing && target.getBruteLoss()) || (burnhealing && target.getFireLoss())) - if(!..()) - break - experience_given = min(experience_given+1,PER_ITERATION_XP_CAP) + if(!..()) + return + while((brutehealing && target.getBruteLoss()) || (burnhealing && target.getFireLoss())) + if(!..()) + break /datum/surgery_step/heal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/umsg = "You succeed in fixing some of [target]'s wounds" //no period, add initial space to "addons" @@ -72,7 +71,7 @@ urhealedamt_burn *= 0.55 umsg += " as best as you can while they have clothing on" tmsg += " as best as they can while [target] has clothing on" - target.heal_bodypart_damage(urhealedamt_brute,urhealedamt_burn) + experience_given = CEILING((target.heal_bodypart_damage(urhealedamt_brute,urhealedamt_burn)/5),1) display_results(user, target, "[umsg].", "[tmsg].", "[tmsg].") diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 7768846ff7e..2a9d3252d6e 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -103,7 +103,7 @@ /datum/surgery_step/saw name = "saw bone" implements = list(TOOL_SAW = 100,/obj/item/melee/arm_blade = 75, - /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25, /obj/item = 20) //20% success (sort of) with any sharp item with a force>=10 + /obj/item/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25, /obj/item = 20) //20% success (sort of) with any sharp item with a force>=10 time = 54 /datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 89937e7b5fc..8945bac1507 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -28,6 +28,9 @@ if(M) M.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person +/obj/item/organ/appendix/get_availability(datum/species/S) + return !(TRAIT_NOHUNGER in S.species_traits) + /obj/item/organ/appendix/Remove(mob/living/carbon/M, special = 0) for(var/datum/disease/appendicitis/A in M.diseases) A.cure() diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 2519a72a2e1..2baea55b151 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -132,6 +132,7 @@ . = ..() if(!ion_trail) ion_trail = new + ion_trail.auto_process = FALSE ion_trail.set_up(M) /obj/item/organ/cyberimp/chest/thrusters/Remove(mob/living/carbon/M, special = 0) @@ -148,17 +149,19 @@ if(!silent) to_chat(owner, "Your thrusters set seems to be broken!") return 0 - on = TRUE if(allow_thrust(0.01)) + on = TRUE ion_trail.start() RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react) - owner.add_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER, priority=100, multiplicative_slowdown=-0.5, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK) + owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic) + RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/pre_move_react) if(!silent) to_chat(owner, "You turn your thrusters set on.") else ion_trail.stop() UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) - owner.remove_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic) + UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE) if(!silent) to_chat(owner, "You turn your thrusters set off.") on = FALSE @@ -171,26 +174,44 @@ icon_state = "imp_jetpack" /obj/item/organ/cyberimp/chest/thrusters/proc/move_react() - allow_thrust(0.01) + if(!on)//If jet dont work, it dont work + return + if(!owner)//Don't allow jet self using + return + if(!isturf(owner.loc))//You can't use jet in nowhere or in mecha/closet + return + if(!(owner.is_flying() || owner.is_floating()) || owner.buckled)//You don't want use jet in gravity or while buckled. + return + if(owner.pulledby)//You don't must use jet if someone pull you + return + if(owner.throwing)//You don't must use jet if you thrown + return + if(length(owner.client.keys_held & owner.client.movement_keys))//You use jet when press keys. yes. + allow_thrust(0.01) + +/obj/item/organ/cyberimp/chest/thrusters/proc/pre_move_react() + ion_trail.oldposition = get_turf(owner) /obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num) - if(!on || !owner) - return 0 + if(!owner) + return FALSE var/turf/T = get_turf(owner) if(!T) // No more runtimes from being stuck in nullspace. - return 0 + return FALSE // Priority 1: use air from environment. var/datum/gas_mixture/environment = T.return_air() if(environment && environment.return_pressure() > 30) - return 1 + ion_trail.generate_effect() + return TRUE // Priority 2: use plasma from internal plasma storage. // (just in case someone would ever use this implant system to make cyber-alien ops with jetpacks and taser arms) if(owner.getPlasma() >= num*100) owner.adjustPlasma(-num*100) - return 1 + ion_trail.generate_effect() + return TRUE // Priority 3: use internals tank. var/obj/item/tank/I = owner.internal @@ -198,9 +219,11 @@ var/datum/gas_mixture/removed = I.air_contents.remove(num) if(removed.total_moles() > 0.005) T.assume_air(removed) - return 1 + ion_trail.generate_effect() + return TRUE else T.assume_air(removed) + ion_trail.generate_effect() toggle(silent = TRUE) - return 0 + return FALSE diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index df4b5506f02..0a1c8e856c6 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -83,7 +83,6 @@ C.clear_fullscreen("eye_damage") return - /obj/item/organ/eyes/night_vision name = "shadow eyes" desc = "A spooky set of eyes that can see in the dark." diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 311b14e9585..11019c4b64d 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -91,6 +91,9 @@ owner.set_heartattack(TRUE) failed = TRUE +/obj/item/organ/heart/get_availability(datum/species/S) + return !(NOBLOOD in S.species_traits) + /obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 35144c73bdf..a1accce86d2 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -17,10 +17,10 @@ /mob/proc/getorganszone(zone) return /** - * Get an organ relating to a specific slot + * Returns a list of all organs in specified slot * * Arguments: - * * slot Slot to get the organ from + * * slot Slot to get the organs from */ /mob/proc/getorganslot(slot) return diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index c1ff55f3184..6a46c14aaed 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -58,6 +58,9 @@ #undef HAS_NO_TOXIN #undef HAS_PAINFUL_TOXIN +/obj/item/organ/liver/get_availability(datum/species/S) + return !(TRAIT_NOMETABOLISM in S.species_traits) + /obj/item/organ/liver/fly name = "insectoid liver" icon_state = "liver-x" //xenomorph liver? It's just a black liver so it fits. diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 3cd63729c54..3d10efd3aea 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -33,7 +33,7 @@ var/SA_para_min = 1 //Sleeping agent var/SA_sleep_min = 5 //Sleeping agent var/BZ_trip_balls_min = 1 //BZ gas - var/gas_stimulation_min = 0.002 //Nitryl and Stimulum + var/gas_stimulation_min = 0.002 //Nitryl, Stimulum and Freon var/oxy_breath_dam_min = MIN_TOXIC_GAS_DAMAGE var/oxy_breath_dam_max = MAX_TOXIC_GAS_DAMAGE @@ -98,7 +98,7 @@ var/list/breath_gases = breath.gases - breath.assert_gases(/datum/gas/oxygen, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitrogen, /datum/gas/tritium, /datum/gas/nitryl, /datum/gas/pluoxium, /datum/gas/stimulum) + breath.assert_gases(/datum/gas/oxygen, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitrogen, /datum/gas/tritium, /datum/gas/nitryl, /datum/gas/pluoxium, /datum/gas/stimulum, /datum/gas/freon) //Partial pressures in our breath var/O2_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/oxygen][MOLES])+(8*breath.get_breath_partial_pressure(breath_gases[/datum/gas/pluoxium][MOLES])) @@ -289,6 +289,24 @@ breath_gases[/datum/gas/nitryl][MOLES]-=gas_breathed + // Freon + var/freon_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/freon][MOLES]) + if (prob(nitryl_pp)) + to_chat(H, "Your mouth feels like it's burning!") + if (freon_pp >40) + H.emote("gasp") + H.adjustFireLoss(15) + if (prob(freon_pp/2)) + to_chat(H, "Your throat closes up!") + H.silent = max(H.silent, 3) + else + H.adjustFireLoss(freon_pp/4) + gas_breathed = breath_gases[/datum/gas/freon][MOLES] + if (gas_breathed > gas_stimulation_min) + H.reagents.add_reagent(/datum/reagent/freon,1) + + breath_gases[/datum/gas/freon][MOLES]-=gas_breathed + // Stimulum gas_breathed = breath_gases[/datum/gas/stimulum][MOLES] if (gas_breathed > gas_stimulation_min) @@ -409,6 +427,8 @@ owner.visible_message("[owner] grabs [owner.p_their()] throat, struggling for breath!", "You suddenly feel like you can't breathe!") failed = TRUE +/obj/item/organ/lungs/get_availability(datum/species/S) + return !(TRAIT_NOBREATH in S.species_traits) /obj/item/organ/lungs/plasmaman name = "plasma filter" diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 4ee4f3fa6fd..145ff3c0c11 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -212,3 +212,15 @@ if(!getorganslot(ORGAN_SLOT_EARS)) var/obj/item/organ/ears/ears = new() ears.Insert(src) + + +/** get_availability + * returns whether the species should innately have this organ. + * + * regenerate organs works with generic organs, so we need to get whether it can accept certain organs just by what this returns. + * This is set to return true or false, depending on if a species has a specific organless trait. stomach for example checks if the species has NOSTOMACH and return based on that. + * Arguments: + * S - species, needed to return whether the species has an organ specific trait + */ +/obj/item/organ/proc/get_availability(datum/species/S) + return TRUE diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 331e71fc759..15cc182da3a 100755 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -42,6 +42,9 @@ H.vomit(damage) to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!") +/obj/item/organ/stomach/get_availability(datum/species/S) + return !(NOSTOMACH in S.species_traits) + /obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/H) if(H.disgust) var/pukeprob = 5 + 0.05 * H.disgust diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index 0b701d194fc..d55598eb38f 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -17,7 +17,7 @@ /datum/surgery_step/add_prosthetic name = "add prosthetic" - implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/twohanded/required/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100) + implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100) time = 32 experience_given = MEDICAL_SKILL_ORGAN_FIX //won't get full XP if rejected var/organ_rejection_dam = 0 @@ -72,7 +72,11 @@ tool = tool.contents[1] if(istype(tool, /obj/item/bodypart) && user.temporarilyRemoveItemFromInventory(tool)) var/obj/item/bodypart/L = tool - L.attach_limb(target) + if(!L.attach_limb(target)) + display_results(user, target, "You fail in replacing [target]'s [parse_zone(target_zone)]! Their body has rejected [L]!", + "[user] fails to replace [target]'s [parse_zone(target_zone)]!", + "[user] fails to replaces [target]'s [parse_zone(target_zone)]!") + return if(organ_rejection_dam) target.adjustToxLoss(organ_rejection_dam) experience_given -= (round(organ_rejection_dam/10)) @@ -83,13 +87,18 @@ else var/obj/item/bodypart/L = target.newBodyPart(target_zone, FALSE, FALSE) L.is_pseudopart = TRUE - L.attach_limb(target) + if(!L.attach_limb(target)) + display_results(user, target, "You fail in attaching [target]'s [parse_zone(target_zone)]! Their body has rejected [L]!", + "[user] fails to attach [target]'s [parse_zone(target_zone)]!", + "[user] fails to attach [target]'s [parse_zone(target_zone)]!") + L.forceMove(target.loc) + return user.visible_message("[user] finishes attaching [tool]!", "You attach [tool].") display_results(user, target, "You attach [tool].", "[user] finishes attaching [tool]!", "[user] finishes the attachment procedure!") qdel(tool) - if(istype(tool, /obj/item/twohanded/required/chainsaw)) + if(istype(tool, /obj/item/chainsaw)) var/obj/item/mounted_chainsaw/new_arm = new(target) target_zone == BODY_ZONE_R_ARM ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm) return diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/revival.dm similarity index 92% rename from code/modules/surgery/advanced/revival.dm rename to code/modules/surgery/revival.dm index 815eaa93816..53573176e2c 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/revival.dm @@ -1,4 +1,4 @@ -/datum/surgery/advanced/revival +/datum/surgery/revival name = "Revival" desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." steps = list(/datum/surgery_step/incise, @@ -13,7 +13,7 @@ possible_locs = list(BODY_ZONE_HEAD) requires_bodypart_type = 0 -/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target) +/datum/surgery/revival/can_start(mob/user, mob/living/carbon/target) if(!..()) return FALSE if(target.stat != DEAD) @@ -27,15 +27,15 @@ /datum/surgery_step/revive name = "shock body" - implements = list(/obj/item/twohanded/shockpaddles = 100, /obj/item/melee/baton = 75, /obj/item/gun/energy = 60) + implements = list(/obj/item/shockpaddles = 100, /obj/item/melee/baton = 75, /obj/item/gun/energy = 60) repeatable = TRUE time = 120 experience_given = MEDICAL_SKILL_ADVANCED /datum/surgery_step/revive/tool_check(mob/user, obj/item/tool) . = TRUE - if(istype(tool, /obj/item/twohanded/shockpaddles)) - var/obj/item/twohanded/shockpaddles/S = tool + if(istype(tool, /obj/item/shockpaddles)) + var/obj/item/shockpaddles/S = tool if((S.req_defib && !S.defib.powered) || !S.wielded || S.cooldown || S.busy) to_chat(user, "You need to wield both paddles, and [S.defib] must be powered!") return FALSE diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm index 38a5a27e0c5..8032930268b 100644 --- a/code/modules/tgui/external.dm +++ b/code/modules/tgui/external.dm @@ -118,7 +118,7 @@ * * **/ -/datum/proc/ui_close() +/datum/proc/ui_close(mob/user) /** * verb diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index afdcd5f30a8..8340f993d4d 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -163,7 +163,7 @@ **/ /datum/tgui/proc/close() user << browse(null, "window=[window_id]") // Close the window. - src_object.ui_close() + src_object.ui_close(user) SStgui.on_close(src) for(var/datum/tgui/child in children) // Loop through and close all children. child.close() @@ -227,7 +227,7 @@ // be tagged, so this is an effective unwrap "ref" = "\ref[src]" ) - + if(!isnull(data)) json_data["data"] = data if(!isnull(static_data)) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 82b54995932..1b8264b1bef 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -3,6 +3,7 @@ #ifdef UNIT_TESTS #include "anchored_mobs.dm" +#include "bespoke_id.dm" #include "component_tests.dm" #include "plantgrowth_tests.dm" #include "reagent_id_typos.dm" diff --git a/code/modules/unit_tests/bespoke_id.dm b/code/modules/unit_tests/bespoke_id.dm new file mode 100644 index 00000000000..06676c626c7 --- /dev/null +++ b/code/modules/unit_tests/bespoke_id.dm @@ -0,0 +1,8 @@ +/datum/unit_test/bespoke_id/Run() + var/datum/element/base = /datum/element + var/base_index = initial(base.id_arg_index) + + for(var/i in subtypesof(/datum/element)) + var/datum/element/faketype = i + if((initial(faketype.element_flags) & ELEMENT_BESPOKE) && initial(faketype.id_arg_index) == base_index) + Fail("A bespoke element was not configured with a proper id_arg_index: [faketype]") diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index bed6f74d15f..1f0f0ce7529 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -398,8 +398,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Double-Bladed Energy Sword" desc = "The double-bladed energy sword does slightly more damage than a standard energy sword and will deflect \ all energy projectiles, but requires two hands to wield." - item = /obj/item/twohanded/dualsaber - player_minimum = 20 + item = /obj/item/dualsaber + player_minimum = 25 cost = 16 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -576,7 +576,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/stealthy_weapons/martialarts name = "Martial Arts Scroll" desc = "This scroll contains the secrets of an ancient martial arts technique. You will master unarmed combat, \ - swatting bullets out of the air, and gain skin as hard as a rock, but you also refuse to use dishonorable ranged weaponry." + gain skin as hard as steel and swat bullets from the air, but you also refuse to use dishonorable ranged weaponry." item = /obj/item/book/granter/martial/carp player_minimum = 20 cost = 17 @@ -1212,6 +1212,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) category = "Space Suits" surplus = 40 +/datum/uplink_item/suits/infiltrator_bundle + name = "Infiltrator Case" + desc = "Developed by Roseus Galactic in conjunction with the Gorlex Marauders to produce a functional suit for urban operations, \ + this suit proves to be cheaper than your standard issue hardsuit, with none of the movement restrictions of the outdated spacesuits employed by the company. \ + Comes with a armor vest, helmet, sneaksuit, sneakboots, specialized combat gloves and a high-tech balaclava. The case is also rather useful as a storage container." + item = /obj/item/storage/toolbox/infiltrator + cost = 6 + limited_stock = 1 //you only get one so you don't end up with too many gun cases + exclude_modes = list(/datum/game_mode/nuclear) + /datum/uplink_item/suits/space_suit name = "Syndicate Space Suit" desc = "This red and black Syndicate space suit is less encumbering than Nanotrasen variants, \ @@ -1495,11 +1505,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 7 limited_stock = 1 -/datum/uplink_item/device_tools/telecrystal/bonemedipen - name = "C4L-Z1UM medipen" - desc = "A medipen stocked with an agent that will help regenerate bones and organs. A single-use pocket Medbay visit." - item = /obj/item/reagent_containers/hypospray/medipen/bonefixingjuice - cost = 3 +/datum/uplink_item/device_tools/guerillagloves + name = "Guerilla Gloves" + desc = "A pair of highly robust combat gripper gloves that excels at performing takedowns at close range, with an added lining of insulation. Careful not to hit a wall!" + item = /obj/item/clothing/gloves/tackler/combat/insulated + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + cost = 2 // Implants /datum/uplink_item/implants @@ -1889,3 +1900,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/fancy/cigarettes/cigpack_syndicate cost = 2 illegal_tech = FALSE + +/datum/uplink_item/badass/tactical_naptime + name = "Sleepy Time Pajama Bundle" + desc = "Even soldiers need to get a good nights rest. Comes with blood-red pajamas, a blankie, a hot mug of cocoa and a fuzzy friend." + item = /obj/item/storage/box/syndie_kit/sleepytime + cost = 4 + limited_stock = 1 + cant_discount = TRUE + include_modes = list(/datum/game_mode/nuclear) + diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index 0847512f094..0909618720f 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -9,10 +9,57 @@ desc = "A keyring with a small steel key, and a rubber stun baton accessory." icon_state = "keysec" +/obj/item/key/security/suicide_act(mob/living/carbon/user) + if(!user.emote("spin")) //In the off chance that someone attempts this suicide while under the effects of mime's bane they deserve the silliness. + user.visible_message("[user] is putting \the [src] in [user.p_their()] ear and starts [user.p_their()] motor! It looks like [user.p_theyre()] trying to commit suicide... But [user.p_they()] sputters and stalls out! ") + playsound(src, 'sound/misc/sadtrombone.ogg', 50, TRUE, -1) + return SHAME + user.visible_message("[user] is putting \the [src] in [user.p_their()] ear and starts [user.p_their()] motor! It looks like [user.p_theyre()] trying to commit suicide!") + user.say("Vroom vroom!!", forced="secway key suicide") //Not doing a shamestate here, because even if they fail to speak they're spinning. + addtimer(CALLBACK(user, /mob/living/.proc/gib), 20) + return MANUAL_SUICIDE + /obj/item/key/janitor desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" +/obj/item/key/janitor/suicide_act(mob/living/carbon/user) + switch(user.mind.get_skill_level(/datum/skill/cleaning)) + if(SKILL_LEVEL_NONE to SKILL_LEVEL_NOVICE) //Their mind is too weak to ascend as a janny + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and is trying to become one with the janicart, but has no idea where to start! It looks like [user.p_theyre()] trying to commit suicide!") + user.gib() + return MANUAL_SUICIDE + if(SKILL_LEVEL_APPRENTICE to SKILL_LEVEL_JOURNEYMAN) //At least they tried + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has inefficiently become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 51) + return MANUAL_SUICIDE + if(SKILL_LEVEL_EXPERT to SKILL_LEVEL_MASTER) //They are worthy enough, but can it go even further beyond? + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has skillfully become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + for(var/i in 1 to 100) + addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#a245bb" : "#7a7d82", ADMIN_COLOUR_PRIORITY), i) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 101) + return MANUAL_SUICIDE + if(SKILL_LEVEL_LEGENDARY to INFINITY) //Holy shit, look at that janny go! + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has epically become one with the janicart, and they're even in overdrive mode! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + playsound(src, 'sound//magic/lightning_chargeup.ogg', 50, TRUE, -1) + user.reagents.add_reagent(/datum/reagent/drug/methamphetamine, 10) //Gotta go fast! + for(var/i in 1 to 150) + addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#a245bb" : "#7a7d82", ADMIN_COLOUR_PRIORITY), i) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 151) + return MANUAL_SUICIDE + +/obj/item/key/proc/manual_suicide(mob/living/user) + if(user) + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) + user.visible_message("[user] forgot [user.p_they()] isn't actually a janicart! That's a paddlin'!") + if(user.mind.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_LEGENDARY) //Janny janny janny janny janny + playsound(src, 'sound/effects/adminhelp.ogg', 50, TRUE, -1) + user.adjustOxyLoss(200) + user.death(0) + /obj/item/key/lasso name = "bone lasso" desc = "Perfect for taming all kinds of supernatural beasts! (Warning: only perfect for taming one kind of supernatural beast.)" diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 2c35f6d26e2..bc2802cf22a 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -55,6 +55,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) circuit = /obj/item/circuitboard/machine/vendor payment_department = ACCOUNT_SRV + light_power = 0.5 + light_range = MINIMUM_USEFUL_LIGHT_RANGE /// Is the machine active (No sales pitches if off)! var/active = 1 ///Are we ready to vend?? Is it time?? @@ -157,6 +159,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /// how many items have been inserted in a vendor var/loaded_items = 0 + ///Name of lighting mask for the vending machine + var/light_mask + /obj/item/circuitboard ///determines if the circuit board originated from a vendor off station or not. var/onstation = TRUE @@ -233,10 +238,23 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/machinery/vending/update_icon_state() if(machine_stat & BROKEN) icon_state = "[initial(icon_state)]-broken" + set_light(0) else if(powered()) icon_state = initial(icon_state) + set_light(1.4) else icon_state = "[initial(icon_state)]-off" + set_light(0) + + +/obj/machinery/vending/update_overlays() + . = ..() + if(!light_mask) + return + + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + if(!(machine_stat & BROKEN) && powered()) + SSvis_overlays.add_vis_overlay(src, icon, light_mask, EMISSIVE_LAYER, EMISSIVE_PLANE) /obj/machinery/vending/obj_break(damage_flag) . = ..() @@ -507,7 +525,7 @@ GLOBAL_LIST_EMPTY(vending_products) shard.embedding = list(embed_chance = 100, ignore_throwspeed_threshold = TRUE, impact_pain_mult=1, pain_chance=5) shard.AddElement(/datum/element/embed, shard.embedding) C.hitby(shard, skipcatch = TRUE, hitpush = FALSE) - shard.embedding = initial(shard.embedding) + shard.embedding = list() shard.AddElement(/datum/element/embed, shard.embedding) if(4) // paralyze this binch // the new paraplegic gets like 4 lines of losing their legs so skip them @@ -524,7 +542,7 @@ GLOBAL_LIST_EMPTY(vending_products) new /obj/effect/gibspawner/human/bodypartless(get_turf(C)) C.apply_damage(max(0, squish_damage - crit_rebate), forced=TRUE, spread_damage=TRUE) - C.AddElement(/datum/element/squish, 18 SECONDS) + C.AddElement(/datum/element/squish, 80 SECONDS) else L.visible_message("[L] is crushed by [src]!", \ "You are crushed by [src]!") @@ -684,6 +702,7 @@ GLOBAL_LIST_EMPTY(vending_products) premium = TRUE ) .["coin_records"] += list(data) + .["hidden_records"] = list() for (var/datum/data/vending_product/R in hidden_records) var/list/data = list( path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index 40b183160b5..a2529428b85 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -21,6 +21,7 @@ default_price = 125 extra_price = 100 payment_department = NO_FREEBIES + light_mask = "generic-light-mask" /obj/item/vending_refill/assist machine_name = "Vendomat" diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 63dc18621b9..d75cb2c344c 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -146,6 +146,7 @@ default_price = 180 extra_price = 360 payment_department = ACCOUNT_SRV + light_mask="theater-light-mask" /obj/machinery/vending/autodrobe/canLoadItem(obj/item/I,mob/user) return (I.type in products) diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 8dbe23a8e60..f3ed1652afb 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -49,6 +49,7 @@ default_price = 120 extra_price = 200 payment_department = ACCOUNT_SRV + light_mask = "boozeomat-light-mask" /obj/machinery/vending/boozeomat/all_access desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions." diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm index 120cbf08ee2..36db52996e1 100644 --- a/code/modules/vending/cartridge.dm +++ b/code/modules/vending/cartridge.dm @@ -17,6 +17,7 @@ default_price = 250 extra_price = 500 payment_department = ACCOUNT_SRV + light_mask="cart-light-mask" /obj/item/vending_refill/cart machine_name = "PTech" diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index a5fbb472efc..194e46869fb 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -24,6 +24,7 @@ default_price = 75 extra_price = 250 payment_department = ACCOUNT_SRV + light_mask = "cigs-light-mask" /obj/machinery/vending/cigarette/syndicate products = list(/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 7, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 730c77865f0..9ba8440a40a 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -131,6 +131,8 @@ default_price = 60 extra_price = 120 payment_department = NO_FREEBIES + light_mask = "wardrobe-light-mask" + light_color = "#00FF00" /obj/machinery/vending/clothing/canLoadItem(obj/item/I,mob/user) return (I.type in products) diff --git a/code/modules/vending/coffee.dm b/code/modules/vending/coffee.dm index c6b47757eb5..44f4d9e054d 100644 --- a/code/modules/vending/coffee.dm +++ b/code/modules/vending/coffee.dm @@ -12,6 +12,9 @@ default_price = 45 extra_price = 150 payment_department = ACCOUNT_SRV + light_mask = "coffee-light-mask" + light_color = "#8b633b" + /obj/item/vending_refill/coffee machine_name = "Solar's Best Hot Drinks" icon_state = "refill_joe" diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index 4fa24c7dbbd..eac9fe477f9 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -24,6 +24,8 @@ default_price = 45 extra_price = 200 payment_department = ACCOUNT_SRV + + /obj/item/vending_refill/cola machine_name = "Robust Softdrinks" icon_state = "refill_cola" @@ -41,36 +43,49 @@ /obj/machinery/vending/cola/blue icon_state = "Cola_Machine" + light_mask = "cola-light-mask" + light_color = "#555cc2" /obj/machinery/vending/cola/black icon_state = "cola_black" + light_mask = "cola-light-mask" /obj/machinery/vending/cola/red icon_state = "red_cola" name = "\improper Space Cola Vendor" desc = "It vends cola, in space." product_slogans = "Cola in space!" + light_mask = "red_cola-light-mask" + light_color = "#a50824" /obj/machinery/vending/cola/space_up icon_state = "space_up" name = "\improper Space-up! Vendor" desc = "Indulge in an explosion of flavor." product_slogans = "Space-up! Like a hull breach in your mouth." + light_mask = "space_up-light-mask" + light_color = "#44964a" /obj/machinery/vending/cola/starkist icon_state = "starkist" name = "\improper Star-kist Vendor" desc = "The taste of a star in liquid form." product_slogans = "Drink the stars! Star-kist!" + light_mask = "starkist-light-mask" + light_color = "#ffc44d" /obj/machinery/vending/cola/sodie icon_state = "soda" + light_mask = "soda-light-mask" + light_color = "" /obj/machinery/vending/cola/pwr_game icon_state = "pwr_game" name = "\improper Pwr Game Vendor" desc = "You want it, we got it. Brought to you in partnership with Vlad's Salads." product_slogans = "The POWER that gamers crave! PWR GAME!" + light_mask = "pwr_game-light-mask" + light_color = "#6927c5" /obj/machinery/vending/cola/shamblers name = "\improper Shambler's Vendor" @@ -87,3 +102,5 @@ /obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 10) product_slogans = "~Shake me up some of that Shambler's Juice!~" product_ads = "Refreshing!;Jyrbv dv lg jfdv fw kyrk Jyrdscvi'j Alztv!;Over 1 trillion souls drank!;Thirsty? Nyp efk uizeb kyv uribevjj?;Kyv Jyrdscvi uizebj kyv ezxyk!;Drink up!;Krjkp." + light_mask = "shamblers-light-mask" + light_mask = "#e4005b" diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 0069c4797f8..465ac0d40f6 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -22,6 +22,7 @@ default_price = 50 extra_price = 250 payment_department = ACCOUNT_SRV + light_mask = "dinnerware-light-mask" /obj/item/vending_refill/dinnerware machine_name = "Plasteel Chef's Dinnerware Vendor" diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm index bd0015d5bf6..8c6cf86939e 100644 --- a/code/modules/vending/engineering.dm +++ b/code/modules/vending/engineering.dm @@ -31,6 +31,7 @@ default_price = 450 extra_price = 500 payment_department = ACCOUNT_ENG + light_mask = "engi-light-mask" /obj/item/vending_refill/engineering machine_name = "Robco Tool Maker" diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm index 5bec644780c..768d1bfb077 100644 --- a/code/modules/vending/engivend.dm +++ b/code/modules/vending/engivend.dm @@ -24,6 +24,7 @@ default_price = 450 extra_price = 500 payment_department = ACCOUNT_ENG + light_mask = "engivend-light-mask" /obj/item/vending_refill/engivend machine_name = "Engi-Vend" diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 24a4744a7ec..0670fa03b44 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -17,6 +17,7 @@ default_price = 50 extra_price = 250 payment_department = ACCOUNT_SRV + light_mask = "games-light-mask" /obj/item/vending_refill/games machine_name = "\improper Good Clean Fun" diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index 3821f94e7fe..11f9de6b2c5 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -31,3 +31,4 @@ default_price = 150 extra_price = 500 payment_department = ACCOUNT_SEC + light_mask = "liberation-light-mask" diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index 34bc3c41c5e..9e228fb7aae 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -20,7 +20,7 @@ /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10, /obj/item/ammo_box/foambox/riot = 20, /obj/item/toy/katana = 10, - /obj/item/twohanded/dualsaber/toy = 5, + /obj/item/dualsaber/toy = 5, /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF @@ -28,3 +28,4 @@ default_price = 150 extra_price = 300 payment_department = ACCOUNT_SRV + light_mask = "donksoft-light-mask" diff --git a/code/modules/vending/magivend.dm b/code/modules/vending/magivend.dm index b1eb72e179f..6b1245cec80 100644 --- a/code/modules/vending/magivend.dm +++ b/code/modules/vending/magivend.dm @@ -19,3 +19,4 @@ default_price = 250 extra_price = 500 payment_department = ACCOUNT_SRV + light_mask = "magivend-light-mask" diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index 897c911e4ca..12c328f62c9 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -49,6 +49,7 @@ default_price = 250 extra_price = 500 payment_department = ACCOUNT_MED + light_mask = "med-light-mask" /obj/item/vending_refill/medical machine_name = "NanoMed Plus" diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index 80ae4f47d55..4e767415de9 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -21,6 +21,7 @@ extra_price = 500 payment_department = ACCOUNT_MED tiltable = FALSE + light_mask = "wallmed-light-mask" /obj/item/vending_refill/wallmed machine_name = "NanoMed" diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index ab48ccb2921..b99cfa3388a 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -4,7 +4,9 @@ product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!" product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!" icon_state = "seeds" - products = list(/obj/item/seeds/ambrosia = 3, + light_mask = "seeds-light-mask" + products = list(/obj/item/seeds/aloe = 3, + /obj/item/seeds/ambrosia = 3, /obj/item/seeds/apple = 3, /obj/item/seeds/cotton = 3, /obj/item/seeds/banana = 3, diff --git a/code/modules/vending/modularpc.dm b/code/modules/vending/modularpc.dm index c94e0b70569..89b7065bc88 100644 --- a/code/modules/vending/modularpc.dm +++ b/code/modules/vending/modularpc.dm @@ -3,6 +3,7 @@ desc = "All the parts you need to build your own custom pc." icon_state = "modularpc" icon_deny = "modularpc-deny" + light_mask = "modular-light-mask" product_ads = "Get your gamer gear!;The best GPUs for all of your space-crypto needs!;The most robust cooling!;The finest RGB in space!" vend_reply = "Game on!" products = list(/obj/item/modular_computer/laptop = 4, diff --git a/code/modules/vending/nutrimax.dm b/code/modules/vending/nutrimax.dm index 3529d115c3a..6e4be04d68a 100644 --- a/code/modules/vending/nutrimax.dm +++ b/code/modules/vending/nutrimax.dm @@ -5,6 +5,7 @@ product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." icon_state = "nutri" icon_deny = "nutri-deny" + light_mask = "nutri-light-mask" products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 30, /obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20, /obj/item/reagent_containers/glass/bottle/nutrient/rh = 10, diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm index 9d0bf7be02b..e8b377db3db 100644 --- a/code/modules/vending/robotics.dm +++ b/code/modules/vending/robotics.dm @@ -4,6 +4,7 @@ desc = "All the tools you need to create your own robot army." icon_state = "robotics" icon_deny = "robotics-deny" + light_mask = "robotics-light-mask" req_access = list(ACCESS_ROBOTICS) products = list(/obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/rnd/roboticist = 4, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index b8a21fc5798..3ad57d1eddb 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -4,6 +4,7 @@ product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" icon_state = "sec" icon_deny = "sec-deny" + light_mask = "sec-light-mask" req_access = list(ACCESS_SECURITY) products = list(/obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 10, @@ -18,7 +19,8 @@ premium = list(/obj/item/storage/belt/security/webbing = 5, /obj/item/coin/antagtoken = 1, /obj/item/clothing/head/helmet/blueshirt = 1, - /obj/item/clothing/suit/armor/vest/blueshirt = 1) + /obj/item/clothing/suit/armor/vest/blueshirt = 1, + /obj/item/clothing/gloves/tackler = 5) refill_canister = /obj/item/vending_refill/security default_price = 650 extra_price = 700 diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index fefad806b8d..ddddf8daee3 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -4,6 +4,7 @@ product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" + light_mask = "snack-light-mask" products = list(/obj/item/reagent_containers/food/snacks/spacetwinkie = 6, /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6, /obj/item/reagent_containers/food/snacks/candy = 6, diff --git a/code/modules/vending/sovietsoda.dm b/code/modules/vending/sovietsoda.dm index 6e2ecd54524..0e9f6ea9825 100644 --- a/code/modules/vending/sovietsoda.dm +++ b/code/modules/vending/sovietsoda.dm @@ -2,6 +2,7 @@ name = "\improper BODA" desc = "Old sweet water vending machine." icon_state = "sovietsoda" + light_mask = "soviet-light-mask" product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda = 30) contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20) @@ -10,6 +11,7 @@ default_price = 1 extra_price = 1 payment_department = NO_FREEBIES + light_color = "#ffbe9d" /obj/item/vending_refill/sovietsoda machine_name = "BODA" diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm index 266a58e10ab..dc6c70cc46e 100644 --- a/code/modules/vending/sustenance.dm +++ b/code/modules/vending/sustenance.dm @@ -2,9 +2,11 @@ name = "\improper Sustenance Vendor" desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement." product_slogans = "Enjoy your meal.;Enough calories to support strenuous labor." - product_ads = "Sufficiently healthy.;Efficiently produced tofu!;Mmm! So good!;Have a meal.;You need food to live!;Have some more candy corn!;Try our new ice cups!" + product_ads = "Sufficiently healthy.;Efficiently produced tofu!;Mmm! So good!;Have a meal.;You need food to live!;Even prisoners deserve their daily bread!;Have some more candy corn!;Try our new ice cups!" + light_mask = "snack-light-mask" icon_state = "sustenance" products = list(/obj/item/reagent_containers/food/snacks/tofu/prison = 24, + /obj/item/reagent_containers/food/snacks/breadslice/moldy = 15, /obj/item/reagent_containers/food/drinks/ice/prison = 12, /obj/item/reagent_containers/food/snacks/candy_corn/prison = 6) contraband = list(/obj/item/kitchen/knife = 6, diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index 3b363200992..e9329dbe53c 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -5,6 +5,7 @@ product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get permabrigged!" product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" vend_reply = "Come back for more!" + light_mask = "donksoft-light-mask" circuit = /obj/item/circuitboard/machine/vending/donksofttoyvendor products = list( /obj/item/gun/ballistic/automatic/toy/unrestricted = 10, @@ -21,7 +22,7 @@ /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10, /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10, /obj/item/toy/katana = 10, - /obj/item/twohanded/dualsaber/toy = 5) + /obj/item/dualsaber/toy = 5) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index a688884aff1..24b3cbf6b5b 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -6,6 +6,7 @@ extra_price = 450 payment_department = NO_FREEBIES input_display_header = "Returned Clothing" + light_mask = "wardrobe-light-mask" /obj/machinery/vending/wardrobe/canLoadItem(obj/item/I,mob/user) return (I.type in products) @@ -25,6 +26,7 @@ /obj/item/clothing/head/beret/sec = 3, /obj/item/clothing/head/soft/sec = 3, /obj/item/clothing/mask/bandana/red = 3, + /obj/item/clothing/gloves/color/black = 3, /obj/item/clothing/under/rank/security/officer/skirt = 3, /obj/item/clothing/under/rank/security/officer/grey = 3, /obj/item/clothing/under/pants/khaki = 3, @@ -37,6 +39,7 @@ /obj/item/clothing/head/beret/sec/navyofficer = 3) refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe payment_department = ACCOUNT_SEC + light_color = "#ff3300" /obj/item/vending_refill/wardrobe/sec_wardrobe machine_name = "SecDrobe" @@ -67,6 +70,7 @@ /obj/item/clothing/mask/surgical = 4) refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe payment_department = ACCOUNT_MED + /obj/item/vending_refill/wardrobe/medi_wardrobe machine_name = "MediDrobe" @@ -91,6 +95,8 @@ /obj/item/clothing/head/hardhat/weldhat = 3) refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe payment_department = ACCOUNT_ENG + light_color = "#fbff23" + /obj/item/vending_refill/wardrobe/engi_wardrobe machine_name = "EngiDrobe" @@ -112,6 +118,8 @@ ) refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe payment_department = ACCOUNT_ENG + light_color = "#fbff23" + /obj/item/vending_refill/wardrobe/atmos_wardrobe machine_name = "AtmosDrobe" @@ -198,6 +206,8 @@ /obj/item/clothing/accessory/armband/hydro = 3) refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe payment_department = ACCOUNT_SRV + light_color = "#00FF00" + /obj/item/vending_refill/wardrobe/hydro_wardrobe machine_name = "HyDrobe" @@ -293,7 +303,7 @@ /obj/item/clothing/under/rank/civilian/janitor/skirt = 2, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, - /obj/item/twohanded/broom = 2, + /obj/item/pushbroom = 2, /obj/item/paint/paint_remover = 2, /obj/item/melee/flyswatter = 2, /obj/item/flashlight = 2, @@ -307,6 +317,8 @@ /obj/item/storage/belt/janitor = 2) refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe payment_department = ACCOUNT_SRV + light_color = "#b800b8" + /obj/item/vending_refill/wardrobe/jani_wardrobe machine_name = "JaniDrobe" @@ -357,7 +369,7 @@ /obj/item/clothing/suit/chaplainsuit/nun = 1, /obj/item/clothing/head/nun_hood = 1, /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/hooded/chaplainsuit/monkfrock = 1, + /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit = 1, /obj/item/storage/fancy/candle_box = 2, /obj/item/clothing/head/kippah = 3, /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm index f3e4288dd6b..ad7fe82d420 100644 --- a/code/modules/vending/youtool.dm +++ b/code/modules/vending/youtool.dm @@ -3,6 +3,7 @@ desc = "Tools for tools." icon_state = "tool" icon_deny = "tool-deny" + light_mask = "tool-light-mask" products = list(/obj/item/stack/cable_coil = 10, /obj/item/crowbar = 5, /obj/item/weldingtool = 3, diff --git a/config/config.txt b/config/config.txt index 51b6b6a4c2b..e2927d36965 100644 --- a/config/config.txt +++ b/config/config.txt @@ -523,6 +523,9 @@ DEFAULT_VIEW_SQUARE 15x15 ## Uncomment to enable discord auto-roling when users link their BYOND and Discord accounts #ENABLE_DISCORD_AUTOROLE +## Set to a value greater than zero to require a user to have at least this many hours of living role time to be assigned the role +REQUIRED_LIVING_HOURS 0 + ## Add your discord bot token here. Make sure it has the ability to manage roles #DISCORD_TOKEN someDiscordToken diff --git a/config/dynamic.json b/config/dynamic.json index 9875e3172c3..b55880ddc60 100644 --- a/config/dynamic.json +++ b/config/dynamic.json @@ -33,6 +33,7 @@ 3 ], "protected_roles": [ + "Prisoner", "Security Officer", "Warden", "Detective", diff --git a/config/game_options.txt b/config/game_options.txt index 05627951742..09825219c6b 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -220,7 +220,7 @@ BROTHER_OBJECTIVES_AMOUNT 2 ## Uncomment to prohibit jobs that start with loyalty ## implants from being most antagonists. -#PROTECT_ROLES_FROM_ANTAGONIST +PROTECT_ROLES_FROM_ANTAGONIST ## Uncomment to prohibit assistants from becoming most antagonists. #PROTECT_ASSISTANT_FROM_ANTAGONIST @@ -442,6 +442,7 @@ ROUNDSTART_RACES plasmaman #ROUNDSTART_RACES shadow ROUNDSTART_RACES ipc ROUNDSTART_RACES felinid +ROUNDSTART_RACES squid ## Races that are better than humans in some ways, but worse in others ROUNDSTART_RACES ethereal diff --git a/config/jobs.txt b/config/jobs.txt index 36958928fca..a266110233d 100644 --- a/config/jobs.txt +++ b/config/jobs.txt @@ -36,6 +36,7 @@ Paramedic=2,2 Chemist=2,2 Geneticist=2,2 Virologist=1,1 +Psychologist=1,1 Scientist=5,3 Roboticist=2,2 diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt index 52a199a99de..ff82b28b550 100644 --- a/config/spaceruinblacklist.txt +++ b/config/spaceruinblacklist.txt @@ -47,4 +47,5 @@ #_maps/RandomRuins/SpaceRuins/way_home.dmm #_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm #_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm +#_maps/RandomRuins/SpaceRuins/forgottenship.dmm diff --git a/html/browser/scannernew.css b/html/browser/scannernew.css index 9e9f8ce1f48..25d4994bd5a 100644 --- a/html/browser/scannernew.css +++ b/html/browser/scannernew.css @@ -14,6 +14,15 @@ font-family: Fixed, monospace; float: left; } +a.incompleteBlock +{ + background: #8a4040; +} +a.incompleteBlock:hover +{ + color: #40628a; + background: #ffffff; +} img.selected { border: 1px solid blue; diff --git a/html/changelog.html b/html/changelog.html index 98360a9ce83..6ec84f196a8 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1630,6 +1630,1905 @@

steamport/actioninja updated:

wesoda25 updated:

` tag) and with sane default styles -(e.g. table width is 100% by default). - -Example: - -```jsx -

Name

Status

Location

Control

[Bot.hacked ? "(!)" : ""] [Bot.name] ([Bot.model])[bot_mode][get_area_name(Bot, TRUE)]InterfaceCall
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 kb9tBxruo zvbSphd`a|LYR?L^;jCazn0A&LX9a&9oeaz$(Ch9+)|Y?MF5%wD*6$004@r?+P92iS z!F^~fq8k-poI?%%#*f9K7xlX}6SvNDzd@vS$f=T{Pi|0`ycB6`Z^~{LFN$cF+h>V+ z2Aa=LP5?efLK0!5PDQZ2H|0$3U_OS2Ybku%pHc53d^~F8E)_aU;qgiel%`T3iTF==jLTw2{BrjZ$bRz-JX}FswRA>Uhwgs z17sKYUq*pj-fC>LKPO1yHsfBxc>2b%YV0 zg%qXYno0MyRd|WxnxYGSTIr`EQLTIIk|+~K!GOuw$F#jl`D=GTUBBb83q&b5W)P`6 zXF#2|*iK!MB8>NI4u#nstMflwF6hGy9i$%bBI*#ak$jAj)pv-qo1LkzAO8J!>+$FB zans|Bq0i5FKs;RtiAMWh8sW7H9qni5gDb}t*P4%i?w{-C*hhhdwfAetc>GT&yHMf$|JLsRv;@%&yo?t# z*LVi%q!OSqFgG%`F|c$OunCL>%L0c9GAyb5F@XacwXyn9mNggsNbDOD92>K-dycXe-idgw1zk$`f@KJFdj|)_E=Sdm!kCS%UC-xs%EOrmBvBAv z0$v?zDuxtPoy+A1TxWMbWwVyY==A*1*#rm3fAm>&ewNj@m8P_pcb* z21k^uX1PBxN2Q6#Bv7HENi}Un-fW3E{=l*E{`zR~PiOU??#fS9Q3|S;@*`V{Sh8U! zxvou}uOe$2`I+Z{zh9Y_R;*9zG6EaN7Ia0XMN4cR0@#WaWmo5z>R?|1mE2~$hvGdH zDq0{z12OM=tmU=lfkaD3+u#i4Bk}a;w^PjB!~*Eo&}q@1q;;IB;w)Ioi)$hkxN3=^ z4v;}nMc)W$gLw-)-SXAEFt7B*!@#>|nr|NFze~=)3`bkd_0rKzTA{3T<+d;{FW=XS7k(mP{p>-xrb*I;~N>dPLK|MA5YK)bNG@bC3H(ydLV zL&`|Ut}Tc+qe#UC``HrhjLN_YS}gHND{Q>r z5!IxHDLMon*OefK46*{%$m^1d6JSbchWLA$`LG{m9r{oU~=9JSMJodV8uveYQU_*P) z$Vh~0aI~7+Vb{Hb^?4&aksDBYnCr2R($RU&^WO-)mW?TaqR=ogA9K>u;l_7s_%$ug zzqlXRMl>ASA&oN5mieW>V*LCxA|eK?(|IV^0u031UftfgNm$|NmontkdWx37P&K_n zzK?rpAj}la>ev(e@q$4k{P39@Mdui8g z1)Ow9At-nA9QL)VT4&vr|G6|NPx|-JS^#R4&ijO3)|22D`cYojOZwxqsEEm87+-F+ zRFx}#)KcVEiYY~#Vu&_u%v&0M1kxLgiUysMCRH{-qCKaI1=4{yU~{iCkreb;LUq_G zwJ>(uob{#;@#--D`z~?%IJCJ+asq<>&}|pVjj4O|Wnj+1lEM%22HmVJDM-VL?RgZt zj)`4hl+3qeq4kE8$9woYt?`o`eK`Z-yg%Z~w>2zir!8k|RdMe{vt7}*ezVu*CZVJ5 zRijj|0!{IqsG@+xzZr}Ls;gCZ%f1R%zze<0| zl!NZDh_=m>cVL16t30k|oZx1LMN`Kad%!T3DU{sD9aH*mg_l6@{PifSk3?W%mFgBP zO^n|eo3_2oAu*&O;}n8)SKx~i#f3yVM@easOfbRfSg3r?5fUXKA0fmM;K4)&Vme{n zUfPi443v1%TmZL2MJ+b2$3TyZv#w$4krq~|d?9n)XU4YJyPp1lRiSQ6NGIPt= zXG=fNb;{Zs6mVcuj~OqqN5EMOL(lM?mISWro4BtG``8NNR^#4hQGm>^F=2acJO9MB zShAnmgFpRz6o0WnH@Zi8Sq;H!^nO|;xU8w-^YVkF+9-GkS&a|hds-ZB@Mcna0ef{d zJdYVdq+KU3(OvSt?2lu^EO+lFB=MixKVQ`e&>%EG--(;!$bG5^!i#iF-vc5TQyBWX zrfDX_&9H?c}cO)+tiC%R)uK*2!OTnFwTb01pBcx1_LN+WHfr zwZle%n6%I@EZl6RANL_=`KTRq>K|j0x*TjRsV9R2K6iEMFsyHH zn7)0H)I2aTQkL;0bJhaQptw%=6H0KneRLyXxK-E!pF3K6Nz`;-%CxuFC z(>6*rP*f}tc!}}H$6O5&mc8{t?&BDB@1$~@z!Sc)(eG}MBp*;XF&*LiHu#jNeC5q_ zc%zJ;Xl*th5q4BRNy5066}=}@(XNRYW+XE%X9lT>@z{s&NA?+%|4|Wmy-Sxkq@)j4 znb4=A;0M>8hnSN~Z|lb6n@}m(!O75zSc%rjjL1+4bH-{ys%Vj(uuV6JkF4BXqKL96 zD;`&}0BD4GwI0?F@~W+6_q7cs!)+;53C-=L(=^k7yacGZEeDR0`)h)N*{vyvSYgkv z_9G3jS_#6_Cc6}DEbS*5$xkeu(_Am67OgQS(v6Daw<~%i?BI*ozhyPFRj@KNtzRs2 z5n`9fH>fM}Rfm+|z1$M5azG#xZ0jjl$^IOKhkOa` zjrxF`SVs3mp0+WNee33Vxus>an`ZQzPVDT4vy%$JAjjT~A*}KRT#4XqWHa)kk(hqH zJjy(&N(JH$#tVTG$Sql?7OJEZaCHom&%|7R%7_`IKPef(KuYm5tL#}6mIgA>N1B8k zUJO7UKJ5RopTF968pvWP!-qz`#Vh)$b4=dw^H144J8;VOKYi<7(=9LPlNtZsYkm|f zV3-HI4-*k!z{dk~oKGZb}3%+Qsqt)lPPtIMFlud7@n->=PCJzd)}qs3(quKameHqN z7q^ErO?u!^P5a>}a{Q=db_g2CDO-qa!jzom;|wK6Q0Th;P-l@2ikq=i%d3LtX>S zmWq9*7=k+2$zIo_J_Wm~W+LHX&!Aik2)pFosUK(pR7m9z5~=viQzEO-0v)jau+W(pa82If(_;Oe~OoJ z6FhUuU6fYCS|)hO)h#Lo7L!wQ6B(8(Ow^zKzztsL#pmk41U^LA^U)Z*WkRzl9hx*5 zllkv1zGL~{o#^kz^FQZtF9Rsm&x)Td*izAx{6`XBs$@?sZEqUmn$M^NIBAKbgfSY2 zusATcKd_QwBjMgRhBX~~n{hiDuRfvMyq5O2WKum0(%d1)-6^LAm0vov{DINfJy050 z9uo#Cx%JLU^RTtt+*ohz?KzBH@UKp~eC}Ie4|7q(6$Pr`iPOKsx+X;YXt~F*r@4w# z`it54$DiGprxYLfcodmAe?Kd2Gg)5kwT*6Nmo&@>WG_A{&J(Wqq)G32P7%Uo=?Je@ zJNgs@$1dSa4M6z<`?-=5p@e7l2y5ViarBCR(|S~W0xFnb(vZv z)6Ci_oKn$clEwCR$b@@jMz!EMsi!wt9|HSAhT76~K^D6|j9a9gJF3f6CNwCyf-|(x zC4ceDi=6my=gnUmv6%8QySQ0>3t`u0EYp(n)Oao%D3bx9;)c`>omJBHJ1agp`bdPf z%RUcvKB^x5O_EOkCUn^pC;Q_$K!T$t%?QCtANoax60&l*ftbi}%GY{6;<*fH%sI@U z(zBxz8oo`I@RH>D*zxyo35ivxV*Q8IkJoItvAvgg542HUsB~*Yl(XyL5 zR8DCCD>MVHx*P03!nl}dPb;`FK__V(BY+s&&e!(xIKh*Pr~&1tTi)c}I+hXpVju1h?nv4gT~-w&AoOZhiv;1>syd zMwYYJ@l_&g5vZ43QK?qb8G%G3iN*`LWIqo!#>$vRsf9Q7a?u#$XOmzrF9NYIElIAX zVgtQ%GMsRG;@>p69v-g|U+$&OhQ-sSuO>`>NytD!_$#JP0cj$1VM6k5GjK3 zyL{q+oxFM7F)5`fbgj!@gFGm2X1_i$W|Sy>Au!U|MG%2KNk}z@q8MznmAKUUh|U(Z zh$-%qn`HXNSpxk0r)YuRPr;G zNr!ckw=8f)iH77wg=^kx1uD~M-&2{P2TOj1S~q_;EeLN@2xp{U;UMxL*gqa?6Nf4g zuhP!6%*jxhh4X3a(dx;*( z*Vj+&Oa`JXfk{fLQ6@-xFPGp&%oyR~bM_hqMk7F=E9+N4_mfzN9~}QH3%C2`q6f;k zC_py%K2}yggv*U;a`;`O4bH3&U8`U%auP{PlftWAI<{w%|8IhA%M`z?Smle_3UVpt z-+W23KPi=e^PRTph~vo#M8ea%eCiK#74hG#H8t{6cnG9;6uFL!aXt9Ux~gTa!$I-; z5wfW&;7}PEUOff}1QHX4F}zs3@9F+C@XIEd*&gnGRq+dt|6X^4MkWs!CdTq$uK6jc z#Z9}5bown@3QnS?|F1px^RN~;Vqffu(|ETiE@8HqzWKQm_TsK-g1w&s7LM)x4s0hQ zc>=SLVf;=bk}`1E_5tLm1rL5;^qahx)>yX z8$%m$tc$c>o%hGRIHUgzKou`S1Zgs$U2M`Kq&zp+&u&Aw_Tgs{^k>{4O~~3C5_70( zVp70tL4;&U*q+$a>-v%{twe;^a5j$dG#9>+q~u{>`uhQ>|4s;4SHS~1c%hv$Rigs^ zjos6ay;<@d;vm6N+j*p8R_|$mS4J{}aQLy2D&q<4Tu0v~|M7?ozDtVsB&u!B22zk< zq#xQXuoyazVok*QEMsdRDHtqWTn zcPW%jmf^L@{5cNPfnRT>j~_-91&Sui;=Dqs#?}(C2e()t zK2_>I!}rR zo|7N2*BFI^eu;Ye*R7Gb5;)zDNqKf5dWba<{VTg}aqpf@!heLHTIUPqgJs+{*}cq4UfMG5GL1jwq{*;gZz7*_6${BW6%YT?bOo&U`0ZUt{gh;r zLb~x-7ptR;$;D}tyck4+6MXn6iV)mO2)c5rl&Kg76>#M_@US{-a7xae1M ziF}c<+_)i{AloS8_W$mG{W-^;L=p<#0X}NG>)-e4?0&jQtQOYV%IqQ{|NAwtT`qiH zPO_C{caW{io)(e3|3c_Zk1x&bvNv93^SaD}GsM!wN&)}mFItn>(9*O-5q_`Au!|TA^sKka805P)wC|v>PJ{F^ z@;}$)YjXf$ii}3jwf2$C^>4d9qQVzId-tH_dpf%hUs ztQ6=)huTiymuT7NVwo4mteC8Rv`1!t9nb)-J^`hEL}uTcgN9Hm8CO`rfyf$E`Fu(O zWO~|ppL#2ttwQ{!(JR>jLdDtWh5Y!$En6iHoDG6ToI6x?bP0%^=^WLGl zH*mDL!cgpjra|KDbyV<3YD;>PmXLJCWdLQQ7kZJWx(`Ra7vX=TT_@Vew7nMfa{{o~ zmR21CH&q#}CN`VSlg;N3`)>I#U+4WwFu{oSNWGBy=W*6Xdu&{Z%xg%@>ieh3+b4TUIPC#*8->*F*?p_Ft zi5^n8ik6A%TM0Vq9wm@`CtQF5{SW=8Iqoe=)+cuUyrsYy$*);jX7K!3yrq(8ofFh( zhAFAP6N?M^=amsM={KPqx4{|V`H8TQg?>ag&ZD%EL*i42mR=E4%|N~ipi3(Mlw;OO zZMwzNQCL-)zE#qJuQU!(BeUWFU(+eLV9r9`Rg!tTL@I?JOtQyK@19N+9tQr+`)-7> zUALDk>e~mVD5)ys^~J#jgCkQS$`J}=f-TWdob>?qb?!QNw9J_Ix;b{#Amb-qnpsJp ztA|qLs7(4=g-TbIN(9YatNf-bItMObG0jM1F9&&cPLKs6mUaI{tVd4qsm}gOo<%_- z!+*GAR^~|hnPoS{k#pjoK2P^}n;=Rb^$evDMlq8&DCOAf{G&1P>!*nE7G8g27e%yW z1-uizl32mxiYu$`5!tA@_`3?F=b+vVd!ABt9Q}{n{GrM*=M!0!_Y;7>@64Y1J`8vW z@9{dPA=Drzs#tXX=Z1m|8*(%Xa^yx&DaRk*mj+#^r;){7RgY^in}0pY8u}&E*fpsW&2q5jU4h$*GsLgE^p2A9U74uVD3aZ+z45@_ zv=uoa#%29#6!n2%Jr}tCX8PszMuqzR`=t1KFHP6E@{@G)$xj{62-OLAV)>B5Oeo^# z2ZH=>KwG#36LBn>uDYB4+8W)oP2TIq9OV3U?=>7_yxAzLzlO%w)JjwBCp}4R`A=fxGjF$No@t?e;fhh%1NhA`WiIOA`K$j`Z$^xUaj)m)ZQinJQ83YpFlnb zM;{U8DDo(cZoxfc_FwN+rBzcWw^-g%cE<7%IIuMb*$<>mh)8=m#SK^6ZGm_xhU&6= zSdzDjqL9S)qx8~K>|n!aGJ7>VAAZwN%QhIHWTV+m`UcasAFa4yUY&qpzSbJRAQ7zvVpG$lU9-G4AAFGpQ^6cV3g!X4Z^b)61YxSbH*kKibx zaGiZ7KPeO_&cCi~snR&&)^={Yy9C@DfiLjm_uAPv1DHseZa{+(i@lOmPk%`^5cRZ( z*L3|+1To;G$8P1^)731vCE5{kb8eLPOWzKEI_jly&A6ZnhLzP~DKVjG_{`g*nglp+ z(S-i2A~)ctDHJlqXtYQLhHDph7RAw#4=I466~4yfT`Min?L6vBki8&Vhq`W&_-*-7 zTJgTZjXS*Rw|DEblc_lX7nH~p0(&KI#XI7IARrU-Kyf`AQ6C_L3qI5Y&v5!cJRuf1 z^P0R3LvY6NxG?%oTW;0>7N%*EydN=br9ZN9&Au5iYEz`y&Z%K$S#lGX)NbH-QOxtQ zDz6bfRD2a470%>v<_D&%^AsltpYJ8$UO7QF?A7ljZojC9tALP$Kh|$=^736e-QQ%p z1MV3x*HO+(8JcRS;&Am(*|mevYVnk)8|A<1Ya;beeZR{~w5t{+zqs<+yG{0LwM}jWF#A4Ogd3N zGP3bw@^{(v1^>Yx=bXbcxi(tNr`RXg-2x9gkw3+~%riVhRK~6Sn!=SSANkClwKa&N zFJ)leS4@7Qmihqac_~NRd9Uf+rR1mEy9mfsq~WdgG-P^@q&IO6VYd?2+;i}rVm)Kb zd0W7}O%%|6fQLsH(aFHA25nHs`^~5oPBxTqARV=x1@bt0#h3jBCeD_UD)X8CcuVN^ zNjd-DJ0}0-{^a2k!HES)KT^8KC#F^RLiYhm5JRbiLB;T@!dL zN57zuRQrHJc(2bYG*FR;z%Q5pCL9&_Fw1IU;N_zTY~(Xn+*K?IanDKQOiOMd^1 zBL}Mp<&M8GiCi6L_i=`Q)AMlZyzY)kQhyRpN5(bY^FJf!g9tlon%D~uPKHvQEMu{( z0X&|ghO15}{bYS4la>8S;etOqhTV4_Eu-_tr~#T}bDU5Y50f@E# zW_M9J=>GD|j_Y)tRPfbiN^FRFOE+@)o8&j(FDihOgFo~O%qEj@ml6-vfa1M>PyUyG zWIt`)OQo(QnU!khOD>H+6~xJAaUDI@xLSPl7yeamGA3a?eHe&j^wi$4QTbZ&F;DUe zP?}ods~?Jh9O+xuj3BgULMICB6hVUIGGQq^a;1q6mXJVwj7QT zANZ7Q9-gCRz11%V;8i*RqQ1N>wlq17b+$C7vNwx?yN|OsGz%Bhd*>zTXIgQ1_VtYA^{Y_HP_oV0Ep1PSGh~EvAH>1ED__|ys9r5b^Y1w@0wR-yu(?rqZp>lpu);J+B*db%a z0%yyRX|5PqqNQd#4sMWKza>}d`j8?<@3nAv{qBFQ=LYNo_W`VWLqd*hKxI&i-3N77 ztgEQkJ6+a%WZnYDI3&DD*yIdt>UP76%vQkcKmUOem76$H>=i@#ik2~EPj>JJ2{w?F zyIK^L$leUuFr)jj)uI6J$VO!2+ z7tYhCo=NLXov5F`_}kgj?IynA;OH-o_+af%?y!NV;EiC0b5sLq0&imme;Qv=^+3OB zXmuwy+Vo8Yo^jwZnNAAP7^m)=v71nLd_IkVTv22^r5i+e+TmkB41UCd?dE438s3y4 zK|LE*=1xO~LFStdFs4r${4cUQ51KwngwHz|!Z|RbQH78b+O>za0aK)eB)F0x$U>v` zR(`x{txHNxY0dhv;mYT&s7{{s$GCm>>k8io=vS^IbV#-G!iyG$UZ#re=31GmhsD1$ z0-9T$NF17pW4-`w(A)>yh1EPYEq_A0yuhYZU|*N6jZ=V{oWku|hG!`FcP6w+Ddn(U-I;yk_d4~|!DQrCh^C(V)n5Z-LTiU$<^(SqGZA~^JP#6#V7MFdD87?LLp zm$Pi_WMMr5U&^{s#MP`!hPvKSB;EdYkhvu^e_FS6Sa<0x`^44xkaO1x|51*`ba<_WBiV?M0WpM&KSfl+CIsShW zBO>j6y{yAL`}yRxq?2oyvr=>4vv2PiS`@eQH$TuZ!aeTe1Wwb<|!-K1xcEeg$;_ zkou)oGDgF5*I7zED9tfU12mxm`D}}Uj10&lnWoZVVkqO}GUK9s56{BhpSDIx`8hBE zjwVTHx;3aR&+>lu;V3S_RqxMH#B-rOwA2-Rjo+)X136(z=WqpPQad8qvIM6 zOY{!z?|t^!xF^5xocrexCPFVZYx{PnHKTr)Q-BGhar*z017YFuj1@^9*?YVRMyNrpIP<{8drLUP8ADWYb4?%aJp!Mnkx!1KwJR ze~r8^-ZEs~E-&VlTskS^rzE<}#kltpux8PP)``D+?c7Icn$}daEp1$F7{3jze)BOu z)BqWgb;j@f?Y-}f%uBdMrshOd!+vvi&lDZ5D{&NrprP29SOV_6I&e9B<21&Q%$RbA zy!&8Qo}z2odK2FcJtijQq>sJuLE#ehf6L^;oxi9!s`XTfBi*xCJYvQBJQSKQUq&lo zXg`zhn;k-!L+ClYwLMf?f~(KVzgTfAZ}mX_#{qo(ii*(n3JI*WMwO9@C`q)P9Kii* z^w}-boU55yzUW>u$5s-z!%Z4gpTVL)>b>{rT9@; zhI!TuV(|NUE>S_|2xgJB0fA!lTAXj&rJozi`2#SaYwnvFWOeb_w3uD4lO~{X?s1y& zbBcZvO95#sO$h(~#t++Wkv)nm%7@?4P9X~O6h;gsdVlUZ4^(J(f+%qb6~`#w?cnOu zaSDWfk$s&iHevQ}s1jv#Mml+W@Z8@RZlYf7wvjA+kmc6l%9WSI-y^_>%VK7@G&X<7 z4g?u4U~mr;Sj-n_5gM%?>aBm|`<~*T0F|6d3Clh__zdVCh;SGwK;^Xnub;{aw$9Xn2%6h@3UC&$6wkRufzut3)vHp)Ak0h%2y@IA4u5fyRJYE4R~Y5k*1Ni!QvQKYWK^Xo!d-j1S$8B9r; zXldV2>-96JWwqO?2w5^>-_c~nua48q-ImJxXU9tfruvC^XkqO>La$Kt3Iqyu%0u)g zME5j-L9K%qni!d{bW;g98UAUztxk9FKd%n--$V#W=Sh9=^tXls>1*whlE|VK?f6Xb zmUwg@V?}UHF`#7JP$XAF=|B_vA3QdEfU3i3&T4>ZPB%6tfpj>r8%KJj!(ns(7h-tH zi;U#+f;cJ33R@iwqj>0(_<|DP}rWx0T>d;Hy-@6jOoH(KN4BM9RZ z^8rA8Snc8fXSsrF_taC@GSZLHLqWA}!afeUjH3BwC_&G1A5wjJl5aaq)XXqY#zi zYC3gC<+oY2N;r7hNX-2= zVkvO2HRiVzptX6V@Ry8AIx`cd-MRs$Q|kSiS3T%0+7<^*#D9HLrz09E1sti|xU9^V z6W9eFA1xjmL#KWX{Jqh?9J%79KJ|&LX4gTF4l%zR50F~??_p-?TtbsVgvWT@X0Lt+NQVrF<)=od zOsYl=Kb-0+FoBWM>XRV0QD3P_!dtaOQ0*BTp&H&jO0}rns_zyZk#$yo-?!NjXROxJ zpyD7+`1my-Q#;j-SY_4mzjWZQG(Y3n;kY#P{|aPY0@Lr;F(ZHSd0Aw|#9rPehJKDW zmeux`i3QD$j|Y6eQe^HzOQ_t*q~1U-sj3t3)Cmk-3Y?rGwH6;UU}NSt`l`P8oOJ^ID}7k zC;}-IJI<$gIow@3*~#dv^@4!h_TN!*T z3Cv8=Y|+1PU**llxFfaFS5&`D#mdPlyLt=HsQD~n`{gCS=H~(zQ4Nq%RT;h>0;I_V{ixG{Q~zx4>`^AgS(4evMA@Ur^qpR`6#;vZKRpaP~D=a7}cX& zhPRG0xaO9+37;ZNto!cGci!Aod{m{B*wMLR{+iD2e!#bD`p$XzZ)+P48uFm%MRqxL zoUUYShw=r0bIdobt}f%ahCH`ok(@*ylmETX(Q)RhhYjV3#Nb9U3Xr(puSNPx!}ohB6EhzX*K+1>Htc}@ zNLB|5gs0mpz0CF_^b}37j6w<~4vgI$2JtZ<1!H0#L~48KM-o#~HgpbLe2q#zD*L{S zSj8hXMLi2)28675$gK{q3%iR=>S{FSFg=DAzqWGDlrOfcTf^d0^S^1gdtJ}7D9OpR zj7m*pKaf9VdoG)-);}-6m`d&nV34s2xRkUu={=9>2$ z#H|f=>ZDZ5JgE~Lf^B-BKSvE|lm+8QmjHu{JY_I_GtqRwjc#r%$sQvPd5l}vl0F`(?8OI#&&-y)eS0dhY3or)xKk9xOX&1S^BcuTGzaq zLb6w5UR@0t!=JZQp!G5qzf=g8Nne@=b#>BB6kQb1%0@q(vFX`=3Zi?f1QQwd={(WK zB0cwj;aQYSaiWYSe?QtW(~{bWC5m7&@eJ6^&HsBs8y}LSZ>0V{srWuw``3%*!7ked1Fp?i0!LfW1tu%3v$ks3(=Pu9 z)&Ho|%u7rZ7?ywYc;{I!{fJckUB0#R`mDr_1*0PVu1pG1JaOW16Vqa#0V$!?FWUsi zbIn*V`xp>RlE*zW4=Bqo<#HW;0B4$rHN(Dqbg}sDsRI|FuZvdFv$ruS{!>}EPp)XD z&2&i|*3zG<#}Y(7vogpu0V{YrbR3r#XPC~{`(@FZg@U0i7b%l*-?2m@$#$*5xBo)A zg^e#bxdp?^BI_azrph18A(9*^)C$5hVMNQM5D#s_YvcdqK|k$c-=jri{8Mq0r>jLI zzEhYZp(Zc*ykJ7OFJ)$LA}r()mG#^PcHeH z?}p#L|LJx&PH<_-^w^wiUUHyeF>SLWo;>oFconr9?Z2%xzH-_x*v;k9s| zW1ay14sq5NdezvIe-b3i-zaofbG$15syARoEY4mJ#N3!%RbT=rtdE|#s{}m&LtHs9wZ=qL?5{>hU}$*p0H_aX<&395wiJYGY87P--Ef^us{J ztH8IP*R(e$%U|`egd{5a5vB;L*5Fi}lBqBbPJ%HS)CI4k&xWTnr*h-peRi8B$>%c9 zG1Ko5=S}&{09g)=A09w!;-_CDo)(ZlXj3ozTZCk+_D5y?cXch2{UhvW9P84fh>(|ie(-eAO{NT1EKmDzZ$mrfYb`8oPw%AR z8Y(e{l7G0-%XU)ml>8#|j{ir~S4OqjbxoHb#R~*?r?|U?0L9&1f>Rs{#Y1tI;>F#) zP`nVVc%Zlxx$)w~<;(M}_5Na!@P}*d>ztXrXV1Xt0c8-(MD5TAm)e#B!4-RDxJ-Zk zmR5jQY`vGUt`yy@G>%-CvcdY5cYRNpUt2mJ8X~Q}Lu{B8XV2C5Fv#l5G7WmEE+emt zg+|L5PJr&|6z|h%_yLqWEeRgHnJ|ZIeCyM~p`_@~#OK6AG7|oe1NkVejJ-s<6mW7@ z^5$9fZ(jhCAuUk|E$Y&y0@8!8?Q0$u!o3{vn?2G)d)sRj>Yvxmm(3>ouWwAePmti( zL2@G!=0ym1IHv;Ep!1&9SQtnD&JhHrm4zZh{9I^!4=GY zrO2HikGUAejFNgIFn67&Xa7Lbnr6k&N)xLrZW8N$P>)qwj@WJw5i8U(VDyNDZjkm- zdXse^cy;pZz+F?X8hu*BdtU(1a^+ckorEtk3zM{yQDwEhcw3Do@lOp-&07<| z7=u1!yeOeoux+~{KZ;8wtoM)guX~+12G(6K%h!Klp&E=Bx+RUZ$qwbAn`L|;X_=^1g6Tw3;HoN|L#ziMerNVaI5*(;(#;-Ce`RZWa}7&RUG5kjC2VeQl)9`AI&&M zG&FThD^*)kMfUA|fDE|Vyg2VqvN%H_Z$|RB`QlW4S_xvqfs2zZ1(97xtzj4w^B+=k zJiY8%n}dMLi6SrTlhG36m%u{?jT+&;1bj1zH$EXX@pf=GB&M1_@zf`uxJvMOouJHfh=)n3e1_*Bjb^iotX|ALj5 z=tf%2RsQQbXRRPF#Vgr<>KG3X@UkUF``T=c9H5}nR%_Z+iTUz$96HSu19DePh z3o8P(sC`obJMq^~#zC**MQ$rJd(TAG4Zr8sNWS^C? z-7@F-i98Zmb$z>`;{isL@gXKt7n!6F^oul+qFP}dTk=pTf<*XXiiDO9O0h&9RdG{VFvKIEFnzxl$GG#5!?h+pFc}P~x-`7|0+a6V* z&n4v)*P+)Nifkd)41dtAeST7KmZ8S3lopnMAxv5k7U%5m;nk}7IWg_Uao>WuQ&2uv z3@{YC8KmuwUbq4o61X%d9U0=K5g!_dw`&(p3upIm%Z7XytmSkEk&C3rp8m!Ru2P&z z9)(bOHpIv5=Sq}{4Z3y=$b3Cz{KvPLTrJZV=aW=y_G`w%-My#SDI;Ns**=)8{VQjcy}TZ zFhZmpeis=*fi8EVHECjFhqCP+$I z`AO(TIs(8rUHS0;KhR8;pn4360POa)!*Qmgk)QjF9L8)J&5(4KPqGg>rS8S1W@~RXYJ`0g}cv z%t8kq>@SIpRFXSjhV{^G2-m0@$aWWm`fcULX4>cfGWEp`cgPRgxF7N@_2l>gqP;Z3 zE+E>@%PD(Z?jI0H+Ay{|nInLh7HbTlw8Q)aGxJyN{B|j9ajBhnx`Ya|wJUY)dx%^1 zSGL8Z@_b&~JgU_%$KPP18s`i+M7MYTJh8W1dY(o5udkZl>l&ue+lR8iv;ulKbq?g#0B6@4d)T^;k_I}KLcg_6ei2^$QdA( z_ml@qVAY}uRx17?w{wg8HHOr-V?05DR;4R9lj@KHIzX$Z0OCg6y(M%4)90FTe3s3= zNcXXe(_@BH>!r}kf~c@app2yv&@ZyMn(tH5qEqE4+7w^g!cvI;Yuw?GszQ|PW_PLI zWRqy*10qKVuqAgFqftk&HMyAmXfEfzK^gE1^P)Pd-&u;ORPPGLe~i5cC&ed0!N{<4wH(>h{4d9=iU66>K~-)9wqG1rp?ZZ2^c@ z@7NG3RciYB&-WQyZLfrnvhmvuh2P+f%uO2yl4E<(yV!C>C>YIW9T>*5+O?4Wh}7J2-CM@#DA1&QZfIBW71!f3mD+d@0pCs2kPr~?B&{@+ryOER1t z6{$9zA0VFTGNHX#G6c^iZUwn0ff~g^Ra|x zA+<$GimhBR!On{8JW97VhwP4q?Rr^(4NBDtv_Vvl)P)?$$1Z$`T)ZIi1x3{vmt-+> z>v=sB$BzB0vb-qmYibKbGd61`5d#6urB@O?9rUvh2@?kZoS1r3fA<6HeB=(o?Mfg@ zy67DobEig<%}qUe676b{ZN3CQf757_MNPsR6S)X{$kjuF(dv6_=twoEh(2}gn0Gd3 z$on(MLKk5v=B4^gHNR~0oBiwSP35&cX?Ok4wI%{J%y6e>o*7Hm-+SBNPbY_5>|!?t z)8}!IjxheFZVSHJo^2Se5Rr>$?PK$V!iu^a|4588?+CN@nWsn?(AoiuB}Fr8H%-?N zIkCN05}{skZeIBZ!G_Vr?f<6**eB+mTU8!f=?GPgePX4n>+-IpgYrNIK2rq=jLg__ zRI|&HiWw592^M_E~ET5WTo4fI<1v|l1m2Y0LD~9KaJ_=CH81h}q>(@iMp=6?9u4LrZEWu|3c{)Qe8-N^n^tJnGwM8>OQHztg2r?Y`%PA1}Xv{;~xVY57{3*mh=c+$ zN|Dfki-I0+p?LFrR6AK*k()cIZo}ao(f0G%;7_I;>W zic-ajH&}Aownsho#1>4B>?%hJ!+1&d7+L@@6XP+#Ha;p8)apH9kG0zZ%HzaKvLSl_ zlQ48SO$17focDd=z0A&X(8yp~3>T(bs0=J03#tfXlx*UBm{%9wg#2PFU zXMam%BKoDxhz$Bg7Xk+H<2w9fCB(p&}iI(6CkA)x30hXaL7-d8-g@1tuDe|p)b z;h9X~B}o6;r2c{9-F)%-R`~zDCQ|O>^F{?Ah&DU!LNwloo-f1S0`dI8Ygp9=MSOrC+O&MJat4fg&_LJNd>VVB%SAKn zkd3naN8Z^0#C^%h_eJc+6DqMl@5Rxmn^LP?IZG-Hgy&>9=pic@*`OvjkBVV59o>=r#I1&YG!=vt}iZSAYzDJiUi+$)_Q9@bPu8BNee}S zYU00mAc`PeZ2OfsWg{xiQDJJxUWG^KKo% z{`5vXna7t<`uT*YUJ$K@hY-ox+sEElH;4un(!wX>($YFHf|Q^+m_01~ zEvL3{=v`@ITlvJ2t=L|h?eOWFW=BjMG37ULqoq@ALkVSOPAV5{3PpVQ=IvlkwdgtG zDkPla|L9(tr2dOn*;4R2`7HY0F;yQeanojj_`tB#9@YAT%pB~cIMO30tc#(0l_!xbpU-M|?n&rg)T1Wk6q9irO0TeEWS_zWP;)r& zwt$)nv|}x;%(K^kniHd&@1EEbM@zzQ=llL$z{TA}EBvZ1(%~$LA3{5$%V)i?>$0}A zX2+{rK{mjFQ*y5=^jFWQ3Gy%VQqY@1&~G3CKOLEnlFJNF?~zWI8X|XZ(0>l4?~X6J zR^=AC^<955F6M67Hqp(#@}h*9Zt6Tw85H8Di{c`fBlmML$f@BixzO@qR$&!{yN=Jp z1FDyFC%~=C$nLEAav8?aOAnx2ODb^+Jxr$!2E!Vbs;?6t#HV{kL&GNSTd*@!TW*5^+ zSYrC6<1WDIyP81~eU6&qf{9HpN3tMrgv|>*soKnvNyssW!#(=3QE|?ucThN0&k^$q zRbS+al29^!lx^+@-&?&L1f@BY)ezaVCz=-0-bGSOX-B=h3$@cP;)uDhlJ`u~2r7x_ znlCyo;be20<$V#PKWTEOLaq>oiO*Y}7BgSL?wr-&X+q1$7*-jd+FVbE;q~VO+W~w9 zoI&SGDHyA9;sFd#P7yJrGkn)^^Pq&0N>5O}(i@cuTFY_0|S zr6PhN!DIRkkL7w@(|^+i@e;;!MIunf@1Hw*VN;yud+&7%lzv@SRWLsI$4$70`~ILm zZ64jIRs2x?*#VMY_LkwvJMKQPv*$%pC_4so=S#`AaC)tswO0k9-r5b&nt zyQUKGn9MrI$GT;UyH)_LYun!pVrY5G9tI`F1)hkY`hytMqq_nO%@fZT4Q&>OQCO3X zJ_GLO!gmFzu8f$gRtc31RKEfuRlij$?4%*JMbU>LhteCFZ9WD8rh?yGlTJ=bhRJ{s#tYwWRVgzE{0&rTWfhfF1*p(G* zswYU;X}aTO3Xy#T9C0M8?{%)rQM9otxdjy`nZiZ!D%ew{+eY8Z7h{yB;n}mrQ(?h9 zM-e_3e}U+p*daqD{)wO$5Mpx*{%WZzLbm-ZS3HjXYL_UvN2zph}gpn=mkG( z4^rYd5`(884QJlKS~&O482z_Dc*{9IHM3 zMLwTD>tWf z*jV?IxcA@RypW_Ln}jO2w*n*&hFvZ>Z(k-EgFquNMi)oJ?f>D!RXpzZr!$GeDlI)7 zE&HAD#2-`B&x`4wRNHQkhK#$`zbCw`8b5&yBAS*MpMNrYh1jJI_xBFd-4bcOm8pHR zcRUeXGx0M4F#EqY*9`|fy6Z=k(DA8WY(%krUxVcljUv)1`RVG=&Y9BYEgZ8D339z8 zKy`(?Wj+YE`{7?Fo-cE*YF!L;Qp>R530Rx9cYu5=E zKg^7LR*aU{f^us}6m4^}xO1g~3(Ba_r*8+4pLpZ^IqPgYnPq^bGzO$?>C-c;>K|?& z@b`wqid>`(gIa`vt~#XbI!PnC-$(+P@4A80tMOa0eVu|!9;g>vWU&9fK5|2FdPAp^ z^ul`JtCGLH;#JZ|PhW>DsKS4g$ooIZsC(W!zBMPy%vZS6>oQC&m%dj$MAo>!-!u*k z*^7k#77XPaVxPpDKCg-(&!~am%H4J0eC$#xqo?&4)i})Rs#bNGg!^_U_7KhwLe~CP zurhipc8PD^_szWj$ZG!ILbg*UA)Hr+ymkNZfaOaqYpPxRtpW3)oBGu#doy-$(bW7s z@v=B4UyoE<*d=9k5wCG0V`X2z-fmDU?C_pS@Z;te%)A%4G3CA!HncK?mF_&sL`|y|LQ)^HBYQ_m zg3Du$4-O2-MT94sZXYC6e2++d|L)tv=`!IwLD15{z8i{Y80Sz8m3%FGYJPY}jr`}l zn40VkWP%{Gv>%+fX0N4+`dsdR1T^_Z&XHoiO5xy$lt#NybvbUUE@tAUGZiy!x)2RIjAW*uh91ZQhQO-7kM?{Jm2TD%Op1pcS--y`a;qe3S|_5I9NDo zlqxxZ<@uQk9q)!lMXGoVE~@>P0=8|IZ?_D_W2#iE&7;@kh80i;|M|ps7wYMwvqEg< zN6b@EsQv}?)HhWHmMPi%jV!2_ELSHzRr2zmjQ;>LPv71X0R;S*InVbAxzjOH-h9NX z`vlM=CC)ZbYW0ouqd);G?GB<%tJ4^W+zN6EEAW*ylstf~hP{TnUZ*8|X9xegrdxoLHwM7_l-rSXCQVG6Hu%yYR zM~EY4Y~o5_BGU_HKpllj7cQ18$8hA|tIg@drJ>MrNOI0%lR3%}Oh_;}mOe}$)KXaV zZU|wA#Z8CfK79sbF~j#%zF5*{$FanqBey1_x8 zOFpp;U+u2){_?m#r13Pi`IYN=SSN2}Gd<62&A6+|TXqk=9W`Rs`4;*b)+q)j9(nEp zTO+;`LkfIA^v}+a{0y2BN+0_?UP~rlIm;TPcg`-q@)c$hHsF&GZmvTq*w)L0c|0Id zToxn0NV8r^wziGxC=#O}T&1ShrzOVYu? zId!2Q^ix_<9z3DZkS8tFa*byueCS7mZKvX&wd;|@S$?_!I=hSinvNKA*A$3;sYKJK zU3bZ_#eAoyBiF2i5LR2@AJejt?}di`2=`kkQI70g3?txVlQnwaqn(!uM#yuadIH%c zvKdjJlDzO-U(kJQ>2kdgVgpgY{yT|ptOP?u$>bRV$7;PbBGMPRR^(>)RS__ueHOhr zyRC8%8E_%!oEoJ@lpu$ zx0iMH%r$L=tt;kA6 zTvaL-Qp$R;@I>cw-0^O4YwuS0oPh8{`lhb43(*~(Bnmw~fo(pZ*fWK*_{}F~@ArFP z3Z|9cQbNyHq2@eV_SLyUgnkQU$x`ip*;jI74MV)H+^60I)+$Ava6(MShX?Dhc#sou zwiKRm>?u%n?Kk<}5QY}Pwo=-JYVM;_R(~fdZg6S;QAiaJZ@b}r`az9&yEs6rQ4R6f z_*G5C=_oZB6Hs4{}auvuVSSR zvWe{R#cn=5UXR}(p7};HDu+LLlok7Z;?W;Cve;A`z3>rqg=Cqe5{$6xnTO3DPXLsM z<&A~Vijp`|0(&Bcu(F^YJzFQ$qSVk~=9n8$T!cBQv-MLug3l`h+iNoQSXOOf z(BWhc8fevG-%-HOd9n93xSI>W)tl|9kJ-FCAw-+)*mAX2hG_LJspfm|u3_dbOhW>E z*YnESnDYQgaaqgB4?dU))t~2{NV5svr(cvR2%{%UFY#+*53GYU$YXZ!a3akP$sd(?uw%7FVmURL|Y+0N<^J_ zajfy9ZlhwBv8UnyJOUG{{)yeV;vrUh!?P-_E%z_6pWEc#A?Hjq<_fI4g5ofv{IbsQ z;EcsgIbYR6F{5n0EQ{;xQkz?zM6JiK2@alGX4x-Jv%mbnaaX#KRj5M?X}b31jL3;S zzw|mWQ;g=iu6lT} zn?l)rN+Zh^5H#vGCZvDOMD13x}Z=HwA6w(g# zVuHcoYml%?!+B-MYMK37KS8Wq4NnY+uU~Aqqk-QeHJRBc^1#ZrXX@h$WBNpsbQRya zb1Hc~--WeiaN^G`mVhbiFlt(Y(XnVm7d(HA-!n<+2vh#)CG>+A^vgO|#3~7?S0FhK z4n)1U&avs-Kj{~7+=L(4Z^b%{PyRNj6?swsZ^`?IPdP4oiVLgxbGXCP-=REqx-sN$ z2HmPUl}Pfb2TLiSa01Teu^#opGv5PppduOEX(*gK=7Jq9k#}SxN#Smvtn@<*_Kn?v z1y&R*4e@NDrFRP3P+W z6-$tL5SK52o;e43W+k(?tH0XKAOj3!Z@qF{0_|;Pc z1|%@TQ=AQcv9(U-<5*K8_}hYr*sFm=#G;^v5X^K4F+ZthHyx9Z=AvP8vL%F;-*A^5 ze^Cb?@Bm7$UPyeH8Io2s!)egwub8WxVxJr_eH>LAUtlHL&doezz#L4X_V*TavzhbRbrG$tXkN~Ye4NQc)cPL}t!z)=S1P#^ zL3s=t_zp3$=H`ZhNf=T08HrAaH**Ma%nf=BFbz4|fNhk#N9d2qmcWCGCZ$n06Ut!3 zu$&M-m~#6+g47&&JI_c3=_0Fd8YXI5M@#ze#(^tSS6jDM_RnqMnnNgTu<^)NH0|9F zYT6+LaQ`L^7c;Q86IjX{d=U|GvlmE`#ByIgWASv7 z`uEcZ;iZad(!+99X8&~x6LE*YMY>wvZgU{Z?mW>0w+go5xz#+pR5K#I!!T|MwicYd zT)IgdI`d)J{bRDe7+oL{W0TC$vg3n=g{2SE^nnML-<5=?Tj{pb6OMdk9>|syR-uri~{?Yp{;@F({zWo^T@O^u8VblESuB?I8 zyfXBfBGye0@&74NOG)%HNaNW3C@{&#Cpbp@xeH<{`}o5v)~)w^d;9Ha(PUfjf6GI4 z!q5Jf$G)FmS#n-m;!J)cKKWNSbeng6vpur;P``~s6VSPNER1J~C@ECU!n(j2ATXWC zNg3ZBn2IOYG6a?%5fd%Fk5+n^h74rh&#R+oGD6kt3L@``p?(~&koNq{+GwW=V*+C;YCyV7fuM$iKN zq)!=@!hZw*1JYoL@rv(7nGh+roek;nja-?@iqXv#%Tpp${b>Y^lpiG3fw3_k;a<23 zxvM+#6~K8TB7Y-9ElOY!gb>~~?Ov9ElL{EWYEw{RwNA0c{kw@qA2z$MEKX9Bq+L9& zUOd%R-wFv1@URz7hRNkN5l{@Pu&wA zu1Y%H9xn+yld|M29osMW@X5YHL%4!km&fjCGS2^kjv=536xW>mG|uLRI1G(Se(~Mp zHf-%`c_X>Ia{4Aow(l{I{4w8IoxF-QR%{-@#&DQk4@V!xe59DyQfbo|y!7cm^w)8M zXL-7fe?H|vDihMBTtLnhYbUo5&vYv39J&9d#M>%<`EU)A!LMY4F!_=4F-pl=G0*40 z&$wvMlxaD3w<`d4sZE=g2+X#J2RPB~%R?u3>Yy8!t2oz4s%b=wXi{wK`9H2mOtD0Y zEop~8AFry+Hi|tJa?BSiJU*&MtK4?TPvz{10uX1wvf>VF-d&+E{^Ur) z_(J%lR+=7ZcIi0ayJUNGyQ8lW0>Gr#yuP8fsWnc4baeH|Rd%L6l`y5pdM5WK!@6QuXcXjZddT~u_ zMXy}s^fbwt2>xAuj4HG&h?D?fc%nnLmm8$~*c6(`IUc{h2lrC`@_CxB#bjiIXH<+n zP}LNW0~Fh{lykSpTV90*fV*QOD9D%WBm5pwA4bM04}gk;Mb1hfhC|4|5Wo2u9y>PG ze}*F3BM7A=O?%7Ngp;k2HwPlHJMR_=LI;_5DtTm|6qsFA20O$`FHnKEFvR@vE~WD?gl8kQ{D$G?VT-dTcw4P_#V7W*roTBbN2qc8xlV2IyGSHhYAYr_ls9ZBq$a zB${oafem&1Cfb$Ad4i6NawE=JDe^Z~G1#cuZ=DpxU&W85RdW>tF)r5B={#u*Z`@V8 z=js2oBh`f@J6!qL1-quL1L1uS(n|lQ1u#aU<<*NEnB?7(YQ4u>Vo33Rb17bXiL0pR0|7fLb(}GKtjQBk;3)$#iLS^e4CW`D-lT#0* zi4{ls{l9|@*0JM6Z{`M@M~)_N_DKCSX@wTDU&V8;RRWy~lr;roB>v2GSQI+qo68Kk z6S2*W{K{ol#lvT#(h2v&Kqp>eUp%L${$mo~oPu$xFxbyrAy5k{vIbUU;8nY3oL2D$ z*@C-QVcCc)qU7H1YE2YbfR=xFU9b>=oX{O7ubYqdjHm z)_05DP$6D=wUSRA2(q<}Db0smXFBM!U$c0Sy4&z=lz1Gw!nGqZ?k zQ#15L9ruJtBCQ)5pd#4O)zpi*NCxFqE6y|>+M)s_K>7HTo=IV;#E0o#luLB8xTJ>m za^Xqn;qy(d)$Z^0E45!_T>hq>o{UG7xFdlbq&%c)uWr*-go1F6naRTo%kA!K;xOI6a~_5Hb7-qsB? z*gj?qaCwiwm6@kl^iNfI(-{sw(5@KeewBb@yBo*0waTVAaO_eXY)E0u;f1+hsBE~V^$^}|10LO!6@?H(q{Q>L;2gv~ zC+>w!RiSuO%KGhh@ugnU(FIpTHA3V`g_xodgS*=qk}QGU=1bh>JBKLz^;=xFo91$15XbdpicutmD_w&`|_;yYS9Rw+{6WAhbF-MrgQ> zq&hx!m$*Od4YIq}nSB*UBf#_9&Xm!+{y5;Cttsu%+- zARqeg3O%Gv;qPbiax`USf!ShkxV<;}UzfVN?gVJvC3cL*DT^!(lA0%WYH=>!8MVBr zbF(`|BgO7djm($JRfPa%k~D6Oa3=r)JQitkK!9jMa}p0@=K32qP4L{;dxyo~&QDez zBYtu`2eakZdW_dCXt|UGO6iV#gnprJNbVf=)YQITEF9ncxPJNmzSdvbc`Y10?ppZf zJWU!=_(l)2O$b$`;V|>*e#YkVbHUM*^sn17{xE3E_u*?~u6197tflK?wuU78q|7%h zj^pAa1gSvKdU|p^45dqkgArB^@@7FS9WqO>brEcPM@L1Hkr_heKZy+l)PP7aE=VNU z)FYu7RL=r9$Ba;(z2#Ros?WMI;`ny((^X$iK5n3*&WQgHg`vi=e5ce0E7d#0ghL7r zKBeq01xMC?tAMxC-|TmR2zC}MnQT5)6@(c9f)5irPc%niKPSoEy^FX@=ZI*@(RICX zG&Q$(0u7$1MZe1~RX?-a)xk$%c6Cn{pCq=WynIg}!G?*4*#F3XJ}_(ra&Nyj-fU=P znEvv?BZz;=$PmSOgoK|g0GVjs5AW(g%=ZvO8L6P>f=kBGq&92U<$Ij<>wOh5*V*BRp z=R+&mo_glH?!V5<_IkBKd@jQ(5O4b6fLYc&F}t?_2%0#vn#&TWLV52ftmz2o)>Qlypmns zK+oGvwL_gYWKSyzer>*C{U1wlZofz-#4jZ3ml2UVW!qS{fZEx|ydSFE$9-7avaw6Z zJte~@>!EmveNwM~Nnf*Ap{*|3Ar2`L8inoL{J#%vgW3kh`X>2A*br9Mt^nf_V-?CL zU+72DB?xg$l!8dW2z`_f_c07RNy`R1=JO1rmUH7B5mb?Ui97E6j8AE8p;Ur!W^Fr} zorLTW)d7<7Wq__BZC5VBv063FHdKg+!*qD*Cr7|}B?BHxYr(-QfkGXfdO;QMEqUe> zJ3>nyY<+1KRiE22)Dv|1u<5^LD(n&05p?PQ{1lVvdSbgn5@ehU2`kC*^NNI;P;hMM zSlWzWCvp92`s|jQ-X(Fg!<&*~Z=+=?v0?o~S|OwWOw+EE!SIyZ)$Dji!kj@ha}SN! ziRKd4hO3cXp5{OGV;uAb!moenwXM|BQ|lkF8%D7B-rM<;!9K?K5zO!ftt2IRW~`RO z9kiKY4J4$`Kj;xgXKABxjKi*Yvd$vy zrJBW)n1Xg=e4x+@PSd<1Lf!0V(;PSrr-u#4fCWo(5N`Gr=Qjhp0~&3)Piaizh4K-s z0*(19Gw(SlZ?2wM9$1 z+jxzQ5&p>A*?h(-e^sK4LcyEmQRuiFZL9fwY=+4`z;)!nF96F%Y}_7>ZBF4MzkfJMe9XN?^iek zH(+=Y{%ZJY@1oCzd)U3ve+drr$W*lpt#c4yr>y8Ve6!-(WmCr% zQ&QU~SM6X!+J*MY+S0>&uY_O9@osBUpL>Fv+uYl3m&KVk&H9|IGe`NwPPI%Jnk<+K z7yFgls`6b^JCyJzS2{v$k}GwygG&->C^#qqO|x{unZ=BhtE_xxvGXAGv=&ps_Oo*p~{)t_-`+Fn} zmfvU9>mOM>E@=|e{W&-Xfg3PBrwOVSB^L*sdZxpB%T((hKc5mD{VS?fE%I&uRKmKk z4qD%bu#L~4`qeHm|VxkW6X<(~~Sup#SMst`-*~JJ3 z)J!BScXWk51Mm@#_xbwFAFbPeyP@E3au>@$h;6iQ+lLsjt4ua)Q5adKPo>y6r2*Pa z0nBfjokvK={`4ElvV6gwxJznCHl$LTUSuz|hoz9eC_30Rl@#Ofi39fN8a6RbxYehu zszN(XPSk1?Oiy*1#IoVAPf9s^AV{!t=M?6Ew>=g;!{0Q$aL|O_N4$k->36VCpYyYS z!$!-jGUfyop6z#?$_FSHS;!uaVYWc3lsTc5O%-=WF zhvX<6FpIwv!oprv`}JMz!6xoMI_Ohq=r=I85#vkMuj^=Nj}an&8lsc&ayxHic$Qo= zK&YhrRrFe}0d4t1UPJ}Q2@^5uu;dJZTuoFHA|HMwbm5g`MwB+C4{@+QRBa+`%Qm06 zQ+B>Ju&Z)2k3QAP-w!!H+=!L-X+uug9hL2|;w>W;)+xWVBWEbgz31_4{}ALHQ5B*% z+s*|I=r3tP?cgi?J<4XO7NMMg}0_9_AWwMEYkG3HYTvQ+av&N4>$ z5Ucl$w+Q@-t@Ltw;~D!dofcBcnlNYk{ofEQlDQrhu9sZ@ffI(}3;|3t`;>vEP+DCt z9Il{uYdwU+w(Qim10PVl9IZg8VO#!dc6m7E8R4{ z;1Jv|@?N;cU~{ew(owbi9C!vm0>ax3tp{H|-*hhytfyH0@dH65ln&9L7hFj>m=5JS zUnQVRL^Jq8r~X*`fjE7aRj(~D9>{j88e%OzyNku`voiSBnR$atjX?AZ%(hS^wu22X z1x!}>&hgq?wGd=V$BPg`GU$uYF%I`IPZ{QHD5@DA#>|-@XxxKcdS-RzRJnzq)^pX;y2^paoZu7(@x0!~=Jcn~$ z=sx#Rzuxw|#6~mQrV<)$pPL9gT!t?EXOZ816>|JZ9Q6a?8)kKKZ#^kDJ!1SxQ>X%?MRr^Xm@` zKJ|Pnj#SsgA}^M2ZNM@{Wl2=-G=#N16~n{sV{ zb2xWwJi@Gc5BtPAb^G>V`RO59$m?W~?h8oU23uY(VHpPlPLZ~|0$_05IW^oeG@^~N z4l5z93J?^-+1?^5|3paEK6ec-iq!y8kbp`LZ6koSJJxnfYT+7C-t?lc`Tu#a^0cY_ za%g;VM24g>=l8j8XKc^0_MsKHfPd7D)>zNmy7?s?W9bvEwh2 zsKB^EQRGb+o%xB2s@;-lMQ4Z&UF|S$oGjgFHG&;^X4jB#Ukg=%8ZB<##^>HUi)9C;i(4_AC6pE3b zhC=J2$pH*S(bYMAvbhgkl-g-jPNJDlZB%RqQGN!wjQT6O^|2TQxs109!QVduT(kDH zy1K+$-m`tP{OZ-Hgl3!Qnw$lIiHbf%fKHJR)~X}Ds17k&x0PKv9a^^ElOfTlH*si) z3+F(yYzUJ;DH96?hgdP0nVC^061!|dpbLRAjd`t%XdfkoCso*rguVZQ|FP zvEy-#7wN+2D8%X6>KNXl8z2qsj>ntS+ye)3F?YCWlgaKMWJ^g^QH&$s(E4t;8 z%P(o6Q;?c{sk&$hXqH~3et0Htqr6H=N{1MHtHkjx?y6r?D@j z&yt;UMdApSPatzlUMKfX(zzCh7VT#9^$@R>ci7wZFWaQIe7|ssmo)NuIh!)H8J+2Z zHvv)2pCh>vF!pgKbi;-7XzweCryOaYh}jQ+Q+=?er@U-6T8O%jX>{lHV;kvn{xb94 zdMkDI4f%SjM*$VSzV#C~f;6d|BA#YJ^U|9oK@Tr=T4GdF4>(PyiSj|^c7A5$gK_GsR3`x=N=VZ~=N-$<9e@6{`j zCYsUbg+gd4kUx$oG7{O%g3_2)8H-S@UE+ORGN6*Yvoi9Avz0uBJqp(AcGe8M%FH)p z7<|U~L^3v9PeV$Wa4`jx{Zs?h%*05w6% zzKt(U-Vy)F#G9Q}Sie2O*^L^ry%z3S0`WG5`WVQ-!hIOTl`;N*3XDYqQ%U4^+EjKX zNJkZ>$`09!x=JBw#RMOzGA%5eM-8l0i1#rNzp!v;>de1LAdLvG07Tu`cTtN7aL63D zNuQwzUsa=WoKa=>d(t z-oSh?pmk}M!P}D*vK3Blb;)^ErthT-&(|h)+@w5~rc_?-#bXxkTiUFgYm@qDn$nFP zHCbZqL4~?9rpVir>rH-k_KGWfI*n3Oq$#H0&n55*jNp6H!{jX;th zt2}CsfrWt;31m-$rGJnZS&2LbG+#gQe)r>(H#}tnEG9Iso46$^F#ev1@EbAV@j7#* zBt0vNu&2e!+fwxWp-JM)0nKM=)E!l(?+0;)#3)G2o-#+j+#UXgVVlmDB*kxqbSg=D zo+G;HXqz%v@9I$bqQtC#(7KzncS?DmC@_|(Fx9khWk9ExB)>Vt->OmbAO-}Y6ViT% zz`Q}gcLm}$18XQEIIlzPe4FHvkhaJ&cz;Y-@@ajsMfpV;`oc7Qdy^EtKEtCg8Ro1| zpzAN6xYh+a-4w=M3NUP3qfNy~(&J0)b&Ajo=zKfR$gDzr=Ivl zPb!HK?3%dgMHvRdB@Vq6@NCjnnWN{~q|F4WKXJ+T2@I8E=uH)-&TUiKV3Q<4dQ*-0 zyIL$tjgB=K39@G>^iq!D9I#Gc4 zFR|vIJnG|3$|xd2I&`SfWQinsv6h{*snTK@iOB$4@o5s!BA`u*l1kv(VHbnakeClD z;>0S<|MB1K`>DEa;ubN?_Vods4H3TK(;QaB>nz;oI%Hx+= zS2%XQg&U;k-B97!uR^^39K$J##AKUV11KAq=PUH_2>%%gGD8~mT?kv6xEvGB0{q#; z^;S%nOj9bASa-EXuh*!eB2EZoF2bMjX?>}Smr*%^yi6cJk)j|i92zW6g>)`dM1GTn zbVLy38F{-;{Z1KwLC+=RK%58_H4>Al<}yoYq5+= zo-{ppG#wLr#ivzIkiJYHB8_?_@U#Ok;ECZ2Jaypmn<}R@oKJ(LRd-R1ECXobc7%zW%=T@`-Ej&eH#y221p^kq$Lxd7Ko*CkA0vrk_}Y)|n^I2tBO*t@D5K`Ticq zUjd%op>}aM=&k##69`JHJnSmdG%5eqb@~6}_`lEfZ&PK3DJo2pWAGz$?8POQdHKY( zD_@?xv-rD?A(Qm3P0_m!NaPtF807Tb9t|Zi+%!EO0U;&Ut2DY1(s{c^{Z~Y2Y2u3` z{4EwP5g{?*=N)o;XLzJD%_9#>tji+&of?fqe#6AssE7v)?4g)&zd$YnoQffBQr_66 z((jV1#so%##qTSkPj&(5_6(@2)0CD|^lZ;D^fCkUeOU(n%qBHp;TYXiGO;ktuf9=b zuHDOe8Z6+^pu$Nc7A4ln90LMGa)~3V&ccT7&8}l$Q=Xx|90RE`$Ic$+3{LV8Mi-mK z2-}HPQ=bJAn>0uH1wKtoToei$S4IQ~gjNI+)Uw3bDG+n~Ix_ev^@+)MJqVm_lbTPE zyemWBPKV64CQCya7CfpW0qwCE-!d?))ug(bf!!Yy?rpJhpvan?8HT{dji=*6e? zxem3yvkH~JT%im_yl~aTF7ekBAOB2=^#^RySEeZa#H0CrhwL|E z;_V^cbV%o?3N;hqJrv^I3Fdg1FSur%>e3IfmoAim0;PYvE>m61uQm90T zcMa&3MGgjvu&B{)mFb5CLcC<+)rl8OylkLJc}^3VB zv~bDHS-8Vt~7I>fdgmpO4L!Y4_Qan2_qWQN^XI2hRUv6(t^9OQ?r zCO@)<^N|=>*dk4T+ab5m-Bl7LkkfQkRQZ@NjPUDE?*Hp1Zazn&HVWi|Ps>bF{7jDF zhtl+2QDAH;pnZCoBdukQ=VGD@6e@1Byx@>&rYIg;;@}I0ICE!)!ILqeWngUx@iP*+ z0n~du8uKCTw>ac3ut<7c2(U0CybS1PTs5&vIArsA#&+Zx6$vuQC62zPL-q3@rUVpC z?2Q8Bd;{YyiFr?%qkrX56Ph?~Qm({=Zb&=TV0PZ4c3X{^l27XcD;yiQNJ6xYoB#kI z07*naRP4zxaI1-%@@e;LbRr^13uM25UPUA<+zw!S)W-xyLlNgJoQnfIB*tw9W`9U0 zVPK7bdc7iwHSy0!IO}T?(+KGd&G6W0oq1y&J27#v$t)e`ehe&<O9nolMV(sv0 z{e{4gig<%h1A%ddBKV&Y`Pq3Q(08=~bw_B@t$bud?*r z(8q??NsPNdJb!`xueV9PQXr*?RY;I}MvCH}YeXT!o6zW6Bm5UBv}a(g)rd{KtS=04 zMs1GA*EwWvvv411v2tcar{+<20$P9JQ=2z&&x#3>bX8wAtLa27mU97K0(7&&)B_S@ zyhH6ypGGwz=n*gt`Z*r;xd?x>kIk>La8ykAP(XXDMEpaVzORmP-iSfMt1#1u2&pqq zOh7oNl3ydC(=tvXieH!&K19M8D&N|ibCnqcJnz$)fVC+wT zEa;m;#Y90&H0)7-af;#{DGFccPwbQ z=%#2Vvh=?XL{7kqHTvHoIv)c4XB}!6_b|RR#5MxF%>_p9=unr#Y=2*d-g_fDs{_1P zR+&D(O{F1_S5}z5+$8Zrfrw3Pq0u5uX{N>UCXEhllBo!P+QfaWOU~#}YvdUE7oWDF z(Las}TMg#_z0UkAhdBMe`q}dKEQ1}7T5gFW`%;vQE)d_Q$T%&Qb&Z9d)uDwlv51M6 zLppYMZKirbWYd(c)96=ssBLstLFYwAF}t=Qtx>|n)g}%}x@&5U!XZtIMd{NZLAouF z_NpQ#j0xvs;;o7}{hPzDZV4wQ+McHL?-fp5AK|?>$Ix>PtQ#9F{&1P2a}}n}tTX?n zI`bEoSpOs7HUqn$h*;+63zOt`#{{ozvS_s^v&_*KSR^kJi2DON-(KZ&?l7>E9jaRe zVjR@7G-|_D6T5^k^}=iC+^D zT-d{S)W@bELFUeE_aoGp^{YA}7yC35Z@kajghw zC)-quZ7PKnrMgeUZZQAxh;X-oHPfQ9AQ0ym*zXh=XXhAsX@SvKrzq~WN##N2ll0s) zz-hY3=$510LxDjr#~>YQRG7lV7DYy)3N!0XY`4gW^l7*P(E&yiWVUK}dy^#rP-7lN zOp`@Cs>tr9mtJ9tm;eh0v5HWP@bFii03jXQB;goX(#GAUQBhY#rK8&?um7##*RF}1 zdlc$25Ok>S>tWs26ulD-=HC*~34IzyjoCE;?TaNwoTB&nz>$~$pH^NV-4w-FSfpQX zU>Xq~ZI;&xoWob$qVxlpP9tXXNF2_eYX%NuI@w}nYm6Ut!>sD}0$)gyKkkxWW8tV2J?HhX z_6<1(-<;@%qHM8ndkjo7P2Z&j)>ui3#|0v;FhxWMdlfV0QP-VS+hRb+2xu<`v=uN* z*OpsSL^~3sut}1p_X(S$fk}%MDohjM;gTn$LwDdBq0v~lq$wp=-8Bh~wtO1*31m(Y zS63Y?Pg^nJc@o1(kh(QR@ugV?F38Y#y+HqDg%fjSj$GcR@(!Ey8)KrE=NP`H%XHPD zi7gVO?urR_X6PT681ssFO^U+R4(T^UM0*8{TO=OT=pO{MU4ifwTE&FcH52dZ&ogv& z9~&oalJ|9}zotX&xiQgm1xDJZd5=$fpC&dyzb?W*tcmX|GA3i9c7yWrAg7(^VeQ8? zx|X5;ryjMzX&(J*i%QxdGaJ$|73!)*4i1JV@KWfRw!EtZFUn#nfReu1Gi z$_wZm>CpIsfpLi@ev8By3uu4eCI8PZx#wgkeSDsM7exeTHd(&A&cX+mIdOlA;(wSV zltXs8!4e&6bf_UQayH4e0?}vTjBD6hV`21n_2g7-_tvN26Kd2z&T8 zMb-da+u?7X@BdA$;rwm=Y<_5j?SynlQN*K;g^MC$frDfjeB$44(7jk-^xb4iL1x@4_@&K{S{ zdp#Nt3*;_|F{05%lSOh2Wis^D95SgEE0sm|zbZ}Ng(ivHBK$WiLQ?c@)X)L>6^-gs zM4Not0}-8bBm9pGg!S@?YfXWO1;W%Q3Ai~%&hu$3NQ@Up1St#m$1eG61ae$J(4@S+ z#_Wbs&i=zJeRYiv6mcy@vE5?1&&CaAc`O;>V_=h{K!=8!<#E}CYg@u4SME^j2Xdf~ z0ofIfi+~OiLo9JrTew1ZKYn$K3c8zsq6gU~mN-PPx|t&o6c~~*AqF-!sW?Ng^y#z& zMt|Imc79qA=ATcz=X?X}fd-4Gcc^a4Fz~&A)+GUr4{MmnGE{F<-6k@yq8?UmTuUGm?bW%n-!IrEAtQ{Mzo#H6}%Y}2Pcxy)22$IzKB+1CbiK51ZW)aXkU z(V--zLPU@Z@jh%~|7D2RiHZ8E%xVztR|GOcFAiB^BI+z0i14-)8PB&^rp7ET*-tiD z+EL;7LJw=VwOPI~ChE&Gy2mCtW#YV86Hhl-ctwNd*ub23$)`d(7k_E;j{mx9V%I`I zI~mfE4dzyCQqRmXc$-P$ahufVOq@s)e^O%In`7Yam>{EwFE_B(+aw>5p;7q^y-1`!!NbC(ur$mW zy~p^a21JfQ1hB|q0-6N0InI5UU3DNX*=U8SbuPK8ft890W+i4WCTb{Rqsh`!Qg1^1 zM@ zD7*yvRzM7NrOshlql^|SV=-YyAPyUt2a*&vw^>ogxUa2<3o!wTcuSYPXKWE@nk={` z?ym}rr>e}{W8>}<$ahGrXSS)lF+nEh(})B{C=mFxG9m2&iLuy~Y^zUOB%UXcKWtOE zEJf)Nh3YY}W;C(T=ub`Y;OjPX`Pl|m*iG*06(JruhNcpv#*T54Uba(V8W1>S2=R#U zwL+a!V>$z3Nn-vbP_47DwU-UfJo_198wG~Q(92PNfy82v)39(wn-yl*y$VL{rp$L( z!N6iY&%mRuB-R!K)6>K&-GB&XG?@2JB`Tikzd-7kpwwko*>;8LSC&}+!GN}EQ+bI` z>&ygJ)1&r`ItwEO#vZ9L^I(MktSZxkNqXAdB*Nn-71121XZtkzBm56!=)El>7;(so zCW}|(8GUs?D=9GV)QEb7XV+NxZh_%B>?DPq8r_WW_9(0ojoN0D ziUV2~)R?7@P1%5UHcMY~p8YCE|89XOP4me6K}Sh?Ix*pTflxiHNzJk6u@t4h_oyEf zh;ItS59y{rsh3Y&+l=swG0IF*L}FAd+z(334*@@_Gyj1uYec^&$I$zhIJ{M2+>~ed zL6`iRMGj_7oE;Tr7+~`{pC(87#p(c4<58uTO+@&j!J<+qSz}H__%fn%7|5A8kGH9w z6bRQQIhdx@nqyC5gtN>JRYE-G*+(zyNKq0;_}S{qzng=mh_G<21j)F@{I(2zXb3g& z8b!ECVEj9D*(x8OeCNWG9sxz0TxqrDC1MY{cT-8TweJf=l7~CW$_e#=#|y z?z2g5O_Ha3-^=gJvp*fse7i$t$soSO!dW&jj~FEW#{k=g714VFyju*6yg;UOcLTu< z@eGL}`#9~zZC1Wq;p98=48K-luJ>skTjBW6hB@oQia23l?g(j{pr3t`hj(q{(tBsv zy)#Mag^L`-C4YaGf%9j19FH1l`VdH(ED_MAm-Y0rF4pMN0$LKN&<%%)V?t?Qp0mtx zBodDr8cnUchSh0$#Q>)vF_~vC9u3AghiQI=MFI`sG><0MaDi%2{*MfOchp&UZ-{pv zkox50`+my;N7w!{tI^dui+f`HS`X_E2DCQ{gf24fmpPIwv7xfW!D61#k0waX`m|pk z(HcI%{qHn!zMZCbtxNti4ebVt6d9i?bL6cqxlEb4M~aLmB6~SdXgg#M4ROY0Z7QGeX_N)Vr54UdZQLKW@C6Y2H2UbG z5E^Y(Ml6yU6Xz08d&?aDV3Ok06c66e%cgreR6d-c|Hc|~vY#zCYP1RZe3$IQhxo}3 zo7C1K!G%!hG zll0bep%W8{sH+GPAUMXobk|zHwqE$ONKs6hB=Bf_EkXJ%K8<&1qIodd*G{}|Ifkh6?0s}p)D|^&GD6y_jQS7fWz11PR!6x^75Wf^4G}>&lav(+T=<5AzXw$T*>|4gk#k2l>yZd~G$QCNvNmgya8B?r5p7Cr zB*as5>@~ZgCPy6$Cp56csuF5Cpp~;oZphG^5I~VJTyj*HLSo{Oqs9yZiBF4w)+x(1 z1|~jD1R9qd9(7FYs!#i%Ca!|6M8v<#iqpDd^4&jt?Zge6O%fYIyncz?QexfdWsbbh zC)f$RV3{M^@{GC;Sp&ES^yML*m}l>w_ptsOir`9+2qXa=nZ+T*>(!_|P0AN)RGeox zNRU3MQNs##q(fyP!@#8iQ8q}}2KH?dGYhz&BLgdEU`dIr`m_Uu>XF!@$-;oOIwTT+ zM=P9V_h&VFIl}+Eh84ioD3u^}LSlRYbOXfSg?O2e_7`FTzkBZ@0TB`AG)hWL1Bmks zI|{v|P#0S`NaVvHW(A@a&=|2uga+3C@M$J3ToNQbiKqj;4VFZcG9Gn66629)RCK6o zlLR&9gh2Fn*KWjs>yUd#o2sZWM^}ubamdoorsasR=#mu+9AJ>sNYR5sh8Z4Xm5Bs^ zjYETZDY1GL@jW2g2L4RfLKr=50M4$7n=c0OsD=R$CpuI=7!jPFruRgG^xxK5{Hj10 z%N!X4#!~cF)AZaJ(0UGl#Huf{|1SU<-LRHk18dO0-qORm?^zhfS2*66q9`Or+amdZ zB2%6Smx*z4*3f`su_X&W{Scm4)UW>4fL{MIz{pNHkI)V zy}1PrH2c`tjtGke22Ga8(2GYC)eX?dhWI+5DI)ye8A=4*;mgyhn4bLeQ;e#9HZ#S8 zWEo_X9h5mjojGjMkNoY#o!`E7^4j0_1pXh&z&a}?nw{k_K(mEs(+zw|(PR;aG!>>1 zKukbHK$)ZD8D^9noaEuBsMUX;dfUWp&3X2HY=Es;xOCG}LyC+8kY|V_c{)*o~7CFceX8@3nGl?KR$WG@3dT+X-ZdtzAVD`d|GRh z6#8AVXfy`a))wV@76vv2Mt`7* z(+YL^0H=R_fqh3}!e1)X_fOeg=uXQ4O+VYVEpez?#CVa!cwL8jLLe5}R9?_zNv0?U zfTvLOu`vLVSl~dm!by_!lpL}oDKN_(Kxmtc@TjxEK^$^okge2NSoO-z^mnLW;e-<7 z*^0O zc(ltA-hCQ%rBCzj*H3&vtZ@7(z+nUH@dT;$5#f6++$&=u5zx^E#`l`o{}mE^KBRMF z#Q$RL&7&pD>N?-gKJ$q=;zr!KbKcCGb7oa$%`;>bMHdBKpe{iX+NU6hXltvWC@MT# z6k72i3ay2TL*t`Sk+ua&p`b*DqJ|tQ=kd-%+?b~mXWsosM5aK4uUYHuweGrWoj=ZA zYsWcz|IYXK9k3O&U&v7YXp7YkV^>Aef1oUsupdfN0S@q+;$Zvha~U^$(k*UlHQ%*U)~x z!LntOeR4#Fw|x5hr#Sksg4TCvJZE74k1CgcG)d`2T`KtWi3v)5`oGy>EA7)Cv91#H z^V}IohF%SQs!VefgCt4vtZ@pH6b3dmmST`86|JA7luVGNgIfu4zYI*R@H`f|Y?>lV zJXebeOCf`jM}I}bnoCmP0-u*j3PMFE#|&x8)LCXggALA7WRKFNfH_jtpl*01eX=hy_V(=a>m4aTF8gKt3DbzpKl3dZs3Hi+d*fG}kL!>`UT3^V}hp_&N~* z5-CIca=@USXXaKP=YbY$uT3%j8IX@e_ywEHJ9^Zt2w&H+?u?0!3xw23^fk<1l|+h% zlWws(DUt7#L@($hCncd&&@_`Yed>E`vO$u9?$RYDTH5B)e26PklthhdBbKIth9zA( zR!qczc4~&BtZ^!g3I0gKIw??|sdDAs5LescJQM7v&1QFs!|60-wz){3I(cTvFo}jq zM8FvHqdg#`!7>6hr=a&-l&b=H7pTuctfm;B`opJwdFdNB;1KsU2C0wu^j;a^pUp7w zsSaE3OOXFkfN@t$0yCcq@t+IvKkDQBXOI5T0<(!|2>fSl zvNyYQ;+P;+9eNueiE(I>XU<*Wc~eF2)$xwSBUvDzB`MS`vY!eGjti76NpydJbH*Zb zT%bK-pr7~Xe(}}E-ZVVFhf??hDaP**h}VVqGm`it1KLFRCk*o zauNyb;C9wIL!T=1+==8gL&H#{KovEvh%}Q@MN^9GV4c&}$UCa7VZRVEIN;O&pMW>) zwrwWoxb3-hPT!toiYk|w;1E5kY;m3`ZXzOJB#j%<(bu&Ca~+9Hg$&dT<&X7g9t?1A z1++IG`}IAKKlN*u`KBQ{9=(<%e!!#uh=%b)8Or}q!WYGlc*(`J3QhV{NS+v}1j-=&hD=IHO%xcbQ~Q_pD__xU(qH%UEckoeC6 zRdMNlI-u{{q-SEHA2Uh4H9_`#gO%q(!aYM%dE;P-g=;;khcxVHjS~w=#xO`M^r__n zY|>1`MRqAM;V<>6_klAZUeY9OG+5qekvVUnZZxS}mdH;+{E-CtA5}3vBT(KG;Jn)) zq4udC+UCOJQ{4Q4I#*w(VZArRO~i!v7nnb}&BdP!as46-bsd`)TmQiz!3xjm7TM?O zT)kbO65-!jJe?cXOLd3v=B5o;Dl*slfbBhh`&TJ5~Kjg zGKmB{99nFmphW?WnWQx6u|2L~rUIPp5I5n{%};WW1bIR{uJKi?z)qU1j95QllBUQ4 z+gwCJB_?K!orqCI(q$W+L~cO)Hw7$8WLFa90-W_X9DAqrr%%1-hVipOqUg}5NaFu4 zP@Vy0Kg176qBWD`TO0JB3UMFm5T|u4QRaYEV$Yr`m!1R;gm`0lW-n}V_To^YJx-m) zaf1W}c6KH5sT{MrJ-X8Y-lGP|MHTH}h=0N+x3j?9vmjmI)KI$1a+Bp<5s?`am;%Kp zF!%k#TC?C)xM0SFsz;YH2QaWX#}lzY)wbwMO?BwcV#S-lz6+A+Dxl zH`jULhXoQ)ribUKx6oxfJ;n}E;UXEviSea^CTd)!$X;^H(4{I{tcnz6LqRbZ`i_=V zjHDzo>MV(EE|Fsz1Dh<9k%Fe?m_|bvAhF4_$X6+_W26R2A`my&!U^(psrmw160s2x zv;@L?%dy{7{_v?^{w5`eNm6~|v0u9z`0;?jT>)-3LB1(ayHgx7w>b0m82M1Zzz*?B zA>Q3O_S*smXFS?_H7r|2%}t6!f4weG{iHx3iHPuD=h413!c($LFZQYJ^ywecvDX6z z7eSc?P6$LP%f!bNw5*4t_;ee6+EPVRvP=X5#R~EBX-X{d?2QlrK|_u}q2(mSf`ax3 zL&>m;Bq-?EvcUXVgTz;2f)fH|4@2*{35nD-%$q{IOA@IBxS0@lk3enN6c!8;3o7dC zLV}wd>O0#E6iI|Z@_>py2pPmauB~AriHHfQv1oy`%IqUS9-jdYO`Orkca_T&*)0MF zNFoFpqa@Es73&uw{9`({+{sR@m6Dx>SyYc=ZTR zHA(-lj`anTDKLkMMwxxI*}^1w^(>$9;7$MLT;Doge(ZbSUu5_D%IqaYkr00* z=j~8rffOY=Y>hn51u7;!eah@ZL8Z$!CH7GL2Jg!6#{cUApZoMa9)8DA_6oasfF+)x z$ik@RH3;zu@tEKsTb%nQuKlGngdV!5w1Q zC6kP^n-1%uOO+Z|iHXQFLvl!CuUTYuo80fabnbR&9&zbxuW{n|24~I`*g=V1taFl8 zPK;!c8cRIQK3;-A9TnIb5=o8;T5MG!LIRv8BEpjb^#v6p*<{sJF}^7h*T?x%fctQp z^+!Y8;mdR^2`IBunUK!%PH$g5P6IM4lyV79!$M*5kKgcni3mL=%TKyp{GWEMA zsXZF{ZR6~{T44U^EEBs0%A1<3zTGBcMno4ClpPZJ9>9nQR0I19lDKb?dZNfqyTq`GY0)G(g;Kliueus9R)?B*-OWLYZdbA&abx@c!JR`z{~nAAJV=cri0EadkG+04FA;&a* z>h!6m^2|wrxB~GH$0PIj5YLYZ+%#nYH{wb$NePC;3MxC6)mtwxva{cX0MDKIO?Stt~kHA?IX>MSMOY)zyncBVPnlSHD;x*6gk ziKnmd6=jW+lO-0WeVllUi)#ky(|LBRl-PS_f&*7A(w|=EWYwel3p)0;NAGq8{S66n zzo(!T1;Pvo5(cSV2?~_h^M9EnUgqNz1H6)oemExf2edj}D)$9AW{7XrS=@o8E>*dj z4e=653Ya9>;MDx+y%s($AwC%dB z8jC@V#%l+eCP@*))gX zoEUYcR1{RUxJbwVlQi3-PVK0}D;BsPodi=H6h(HSVPTPGlEYYJc7e2X?6W@ZZVhv8 z2yFV#hWNLa*-MYwGX^QvI5B#TV1v_CxBwts+Hp*XK|)xhvlY&(Hu6SwLenjBcxt5FxwFZkH z4yAV+M7zd0@OvscHd&#f6XNbspxS`{3Q@Y zpZ+gZSz0hi-lL%}q$u7hP$G}+p)3n;kO_s9( zgTTjeLcAxE6#mks^I8M@`%{#jFtC0*MX9KhoJf$-RkRPd^cEyiEpzB+3=(;l&ZQ!I zo^$EGWI(qV6ODD*+TqhfAPf!7?olITkepzDtIUDJF74YVxrs4$;?Q7%Lxgx_nd16$ zyPF5-Qbor|su;0?E=S!=Ez8uK6_k%zWHxmYXBw=@8rLc%cB_5r=T|vCw#Ex)l`8}c z&@pMVPE3ePk42u5F%dbYNl`+>IIzX}#~^;4L{4cKw+OTeoy7DTj=j_P#y!9$`__O# z-XQTri2r6EXFSFi4z1Zq4sP|S|3rv)RL7psNuGA;{>?rf))iDHICL~g@p+e4SrRj# z8Amv7OlS|;QthQQrT^Gw{bL4pDI#u zVDNo)mg1N|x^xb!XgP=0pMT`3cMoiG)_`VNB2^V5S7OhfjIr}{isG>WoqJ=VojUeb zo*j(V#{&lM5-25s+EmdBA^tZ3AQ8c)LGm^Qts4@)C&a&VKxK^o9= z%)C+{wlYkeRWbj-B7MQ3@rsy`Dwm2D83Np~0quN)m0b!dDkdfwh9K!mMnxAMU34sl zHHsXP-GC;GN{wsOxhAeln}eYwwhwqJdK(Z!P+ZVpC0^p0u)^g<5YnN^aDCO0V$YSSjMHx7UziwS>jm&+_9MO{+MtK6dS~#!IJrd$KLu)^*<2XWOoacgE8?wi7a*5 z-sjStSJB6&x#eB~1qGb}%}jtZm1q7@U{fFxCh2ZO^s-onKPizT!~dkzu{SbI9<#{U zZ8m;Npo$1TEr|~b6jMddDQIe*nU5=I<01Y@hsL#tC>(`fs0~(?bxx1`b(Tnyr$>b$ za3ttbkukvzhq~?2BhRcfu*tKdlVkRpN%AR497lv(Ch5=X*bl};3!pq?lf9avG(JiY zObQfXlZ|aMZw&GNq)+{^HX92A+RDg+f-YO4&04~to$~0a16ry_kKtd30Zlx5G+3t1 zx{L{KFzv_KNrD_%Cde?3M~8p`8fIP~CM2;kpuM)nsjVjKa)SM4m+h`k|G#Z>IT7M* zH&~{?JbmgEM}W6WS4N|GTC5=u^r_*|n~}(4G0_!}mmzM(#Hk-R_7?p$$KHJ1dmEST z55+_;lE}A5MAE0PMg(Pnn$$1~lN|nBit(C2-2`b#Cf3QfG1Dsq$V1cv}A^-&+L!a-2PtE>(7L2MgRso6Q^h%sMaJ0HZC^ zBer{yh=4Utk!GAR<{4wxcQf_%`9BA|xyls=w9&EXQ6qoWcigb z;bn)q%rko-A}}3V69$R90WqK(NMv5ae&v8>Att&zCPYQ2&NX$Uk3XfL%ZOl9geHPC zL^U7=aXd=Gf%y4fA@SzB?X~b%YDKO6%I}oUx=O6Lu%KQK2D;EE9UwxMobIu_Zq zj;+JLrmiTc4T0K7QjjV}LZB2pI_Wm+`(t8FLG$Y@o;69`Ws#lLvAN7swnchcML*T2 zIpxt^U*UN=Z0ExvO?_O){FqB`A;kTG43o1u2^kaICW$w7tj`)G{v8mj7@zAI8v zQfbo&hB5-u$Oz(J`>@$brMSs&3cOBZXJ74MYj~Rn<4^FA|JCze=5SOYZyBr zMnO3Rcp7?Sl4?c-q}5Wh&LZ1fLJ~7B_6{5xq$uLi!J|h+AVUVYbZ}`)6$2H6bzY#$ zHYx^PD#D|C&ZGTu4dZWJx|0F@!&R;>$3#bVaC_KfO%7e()cFM-ASMO`MRuWM;f_GS zCTq-a6qgPL316TP;N3p-+7cTQ)B&w_m#yFvPd$F43)G>qUSReO0#2kTofpt(vEFO4 zdcR4grJz0}iJ0du6x4i$bNlAFP1L=`I|At>B7%LA2o-&Qh0AuDiFKXiq=vpO5E%{Y zOFGHpHpO{?vfm{0_aWZj=-BsWn0VAAy`Etro2K+|m1~0~o?(;odXr6Wf`c;8WWpku zsc|_~<0?6(i3yqHAiKDmDGs-jjG4ntvNDrq+%QP~xk2(TW5OSa@E;#%-?;(pX9c2a zlH8$V{bEFLY3SRB&@h`x#vV*E_9rp%Q3($yhU&yJ;fq5k}oxx;Rpko7jzQuOi=ic zMdsr}iL{E2u`G$5DGpDy*~Z7A$r3fLG0q<9EK=hd*Z8Vj;W@d=@zG(CKoaBAH#N-X z1^jwUpz9=)CaH{urHvxL0f>k(n7ppVBy2vpLPyew1yw}N&oCQ6v3FOEDZZV@Q9iZP{O?#nR! zFo=Um@_RzOoj!eE5=oQfmL#wSv=Ry$SNRtVlIYkBXptbt@O@HJJGgDZAd#Em@Rbzf z4Ue8EvFGk2V<#${A1w3r*A9~_`T3AwM#DHFP=3oM{|_MgF_E66R4}k-HH^6o6R&ru zzO2K>xI+Oo7{~9G|8Blvlpo9fx9uq@=v{YtqtH?rKMLTDc{pk$l zyRuB~P%$QL3Yv=kMS%!)%wj~K=vaU3)4$eb`wvU(ia~bjTs^qTagiXW#YB#W6E|4N z)L6u&O^quo@pai?g$^6-DQ;eMXc#GqEt8~EX8*c|`C5VUVu5;#irMt(1rqVBhP@Qw zHzL9V7O6RlR2?K$&c8cN`4J5x@6b3G;Tt`+gn~MmAk!46>n7=qkT98KEFN}+H*x|c zuqh6{o2SlH*&r$087%->?xcVoadfdPM{5Z5eKF0hT1H96JW;w#&HG0<<+H5*W3cs6T{IemRon>-1 zqfNfJ%GD3faO-CS#clPe-L{{XVvxijy{AKUvdWdIfc{My=JPReK1J~_K(;0EO$Mn? zhxmVIVE=?bQ3T@l5dWX+EZ@7z2`j|4>MRd7Ijw5gZj%)=K_M7|#u)?(H5OUrI90Cs zTb!#U$PEUxlDcO52KI$9cFG*HA9QHyb(Zc|F@C5^rIaAwXs~!!isBpIeC*c~4$WH< z6uKULLn8fv!2u2X+&U-UreW-Cuo$-4SPXCy0nS#RX2T}$7ulN+!rqie$IdZ>M3SM* z3eS$%9}W>7%REDfi-s+h_&RI6zy$jdK!6KK5i&THWBMJE=p-;bl&ia=x}mi{CXy<8 zwa&5}(8Z_66~0W3YjoL0pa>0v6^^sab2M0@!UZ$H6*1w8KzpY|mLfcTK)deV0P%(+ z#QPNmZK6Zv^*;T995$u`5Sb2}FICX&G3GxQ;5a%7^2}`&v>igjY9_Vf3}6V9*Fiis z$$^$jTM2QsKJ}lr$i68-;giGU#Qag0mUO7U0ph+uoN#Hk1nOL$#AANpvg*Nl@kQGl-WaqJQ^kjDHeE9u#>x^S&qsyK)}en-jFeY0NBUF%yJZ)>?qW#!%)6W(-X=Tc<*vms=564JS3{sRT7MZISnSY81pXssv zs};`wbcpAv7=b|1x>WvD!VV2%9!N)c{T#FN1$Mp~#BDykghx+xs7DbVAs#+`hIP1( zhKYuWt>&9qrYW+3L1MH&!AR08K!^f6ZX|csS!9(Hz>pPcks`$F36$SZP&X9Rii)WR zxMG`2+7yQ_h4}q4`%)I^@oA2*$r%#l$WXq{AQC1iA+E1HHjZxdwEG z3{gV|06w$1tvMffR~ZfWR8Hojqzd5uT!*9GE7K`Ie}Dv^qU66%;^quQw?iOmr2 z$bbL4|gQ#dYw3y~*66A$V zPE4?0xU^}rK{WF8{thGk?EswX*RIR{u3y{9Jpgps9x z*T+E~UEa@2Ph9tz4u`c46YR&Q#~AbUsEwHDWda6dnWD`m+gxIXBM1a*yl`ES@ogDd z-)S7;<@e;7Z4E*10x>Zy)=7|Kozt|~V5r)IbxyO*r5o#V-K*LcR2 zS^o?ZBi7q);*lz6ol`7uKT{mO`#a5}NTA8u?iEfPsdMd-7OM+w)(vfxZsXCR%w7~U zs$3z$Cn69D3L-_hwUhgC9M5(3q!vB(%ZX|p8&CB!Wo*iQ@8$0LGWed@Ic zxA(0DkR(nBc-kcODwoc9h?iE-ZD3NMh7Pr~L8|QIxYOLE?d0y`>Ezx9ox<~cVq2HQ342S?X(WiQQm&&1- zC`>a^^XXIPN~X;Q6)wjSJ_Y6|vA_feXtRk)8iq&}L4P!@4{8bfw)1f7{xJWSUC{kw;9g7atApsvP0#MQ97U%Hk z(`3c$QQKE%5f%N_5ne;Xy2~In0Yd*q27pES5QrxPVzx*1z<}l+1?`}YnThbP>LdWc z63@yGTazkgRN?ZoA%m&CJjgtEb$9b3iprivm(D0kIFyn|Xc##I>zzpoKU?SO#el&+ zNj$5dJ?7H+c!#aeHdrfP;tSekzL@P%Eu<({umAp=oE2-lz$&M3Xpm=yHBKUl0l!^T^Ey73lg|E0yod56YFQxuanxpAA^`}@?M*RbvZ zk&(!bBxajSzoKJJ_o%*pi*tM1RJMKkClic)a+;%$mBikksBvx0z*2W9_bmoET;t2e zejXka)SZnS)3|hSXp*ELI&8AR3nVBoluWJBWCe#N`*@fsZn_Sd4{S0Y>QNJI)_%|; zgNpHAA_7Z7Txa?J@#rwkVN5a}F}yHt!9SGXWU{AU%^FUCZrm?$lY*Cf&X9^F%QmS*d$ ztjB~}m+e^qA7{d)r}{Wbh{w>|P-B`SH~cO_JOo;Iol}gnmzG$M%j~_PtM+fZbbi0h z`WFRCUBh}-p#FwM`j5w$Uo=R3C7|Dt#1AQGdxqWQII_sT!XUlBOXU%R^s0g`B@i&^ zg!q$5ipN#7izcb2Boa2+L6WihULItIBV;JEgFEQcAkQog4W>9ORCIJKR(PJlsEeBdpB__DTAh{Oe9uIL@;6C~^AIdRPxz2uziLQsCNQUxCR(YOnE?sB9VUTFK zbT3I{R>ERL_*VwW#DL~1NcDBcentSi=GdFn4CR|r6n5BTUY%gg=nF{($h}VvY zcEm)UNB2h6{hDKMRxQ#W5{SRG$vi1RG0Cjy*w<1NF|bQb*8akymsByfx>U^d@Z>~} z=^tJZ&)giu{nGGGLh5Sr$_z(Do~i9Tv**&3-whm5(7YPg&INcAA>P-tM771|lq0HzS!u z4Yxlq&fW($IlE?(+%QQ;CdovE`?5ScZtYRKJIAc6VmvBPUzB5RLn8Y+W>8@6$1JiR z_vr2}vUj7+Mg=&Oq|i`M&p9*>#6*W;0%Ng|?m++mAOJ~3K~z&czpSDUBr!RrH)0~{ zTpP)=qZ=u05g{2S2^p}1+v&5-MV@4mLztv*usK_-zg@++!z39EXs7~(1o83B_q!9V&qoe)1Y3jg36&wmB= zt9@#3$uskqMd~v>D%lWU_2_MDnAHgXiw#!)G$Kq*a6nq54`jpXn?t-@5IQ4Shcp9R zT-tI3{x?TJPOru4X_NGw9vxN1^lWl}ArSuz@_s;dXq=Norc0~PWaT9>u_6#^lVuA; z9O7b@#u1uFX@|{b*}MM%cXae z;t#hs#OVxEe_@lmtYc?};EOh@*(2&Kc;qUb6 zx;lvg!^FvN{03-%{IWsfcXX`d64^6{>Gh(*g@+R44hh7VNs=Zj!X{&YxO>XD`Djd7 z9%m0F_Jl5OYnVu?F;s@MXJR5e9Q`qZ&j+c}bjz zi4u}nIMg%&c(mzL$Dx5iVg&F+WSEjgb_es^C1XOzq4h;c^nL~7FKb+R+bYj(t?~Tp znyfr6P=C-QNsMn8*zZd-KBu6*0+b+N(9kejE?rj=-vhC(Vp#&s6^Ka1euF@KXj&XO zHpSt;p5>;?1$I1}QKpY8idLCmA6X_zGDeDVGE8EVN5>k;(Tp2RnV1-hEEO&h6O(5a zU_GF}Xp#MdhF*+`3L!25ZeKyon|abI{}j% zMnRPVK}_^ugdg{)_FUSX5I6e7Q;*-M{|pjuQcyl&l6f-3pHWb&I@a+JcO}F#b4-77 zi?a(6{(OkL)uWm!F#GJ3e&k8unJ(MAVr1E&bE}6lpJu$CW_%?{{*MG45r|*vvRzV8 zg@)yV3^j~{16of5sz6j%I5E>=H7iiUHk*fBI%Sup)np~H#d%gZ!393Y7U$XGEDCBg zpxM>Xx=D&1ThDGscpq5gYp1q2`-Lq|e=^0`yJJGX#?|+2arRwVrVnSCT(QajRYc$? zDc)g{xk*K9*kqOz^t?gp#R8HM;msCVMaQc2sVNGYqGJ9=o|!+`1xO;fIgC-3OlgjuVc?&mQ|wZ-wU*0fXP4;2>=_+2kxu z)~Ilih=>i&FjQQqB*>4F>eCEpG0ly7Y5gOT2WPFPnO9`fDYU*P|Y-xB@MfrW5!a@|4Bu^M@4^e zjNc1!EQt(Mv=@W888{+P+AhtsidDDBC)1REFvr~Y*0}mRWe$FDjWaL0%GYLhaEE`9 zFNmx<)dZ+<6_XT~c?yRHU8-zzi9E9`@$?P7Z)YT>32Qq?;v8KzNmHc2jvO!#@|Oh4 zzu4sd7h~@kt=CoG`G5AQPw&s|MfYBH*_Kr-%MHt>*py@-fG0Q&hhSh568=d@LNW|V zn1s|>B!mH+A%-La8BZV?l7MNpz+IMHW%VoR_VV1Px6}8$IOkpnGvPmbEiJu});iBV zW$*p_{=P*xSUzF&u>R2T2jo4+?l&Gh{``I@e-;>o+S>4^Nvq;UqGMu3t3;nYER|j}6X_&Rp%-S{t0*782 zgdX61G0o65i#&H{gN0O|ny53Eu5huGW~d92I&(^w4P}X!S>SorxxfO?NsCr@fSs*r zZmo}V_~KBoYdyo@!5tjyTC^9kjK9anIg?@d)&zxtGCOh-Una;63uLFj)Ga_OAn3-( z?kF(zD;mbkOqr?*<$6BDn_frTCq!QDZqca z%*;nXr~~X^f&*@bfnMkxprER;T8|Am#BLH4L!%)i!(2l^fQz-%rxqm1A@M)p(A7Np zkJ+@>KzaZX4O*!)-vGKk?j?i7;UuNcde};e5*p@=L261tMW9?9W4|@c&C*r6dxzNj zdlz_=F7-~2rdJIvPn4MP+pLW#Xqty}O@Q~Hk9%&7vmX!ek94RkuXFBjgM|;6q<;c1 zt6UsaF-V29a8cnxIn7YlAc2p=DA(fACr$wun-pc@2eJ<8`pXM(lD1OeOaXZLFlH!e7M*d5IiNA2^Z|KC9 z2iR>VDXw|gH^j;O(K0W7V^yAgvP*4ulVwC8rxFyTkHa~>8QbtL@GKQ`MJF)_h$d_MecV-tUSpZl+f%ZMpDI@g4bekG;&Xg+D-BX7#v(7Epfbx7WEuTApeGPsp9TUk z)~7ua;4#bNmmAFAyTQdllk~}DUc@BV*D%O1BI4xiE>#BEv!)Z10j^Atp~*_lqLoNf z-Y4+`A2;P;d(n2`x%Bmijz8c&bo>GTFOL7}r7qPao8I3$bpB(H>McHA!Nc`)jF)Q6 z-O!`@VFgX=Q8PxkZb3muNHKJY|bPG&=I?ce3>%>2rW#m&D zF{Mv)*u&0%GSQ`SGR@%KX@(Y8c=_%=4eHD(0UkZ7R5+gxBEPo~OmOMb2*Lv2CCAvh z0Aqt$1Oi3qtLt0!R-b2iVm!)?|c z9AMW29*)|jHZ{t@Mwg91Cvk&KC2aA3>BR@o@Jg>__)mSI87G+0PuY*Oww~8E=huZj?tSWtj5T`M<5Q? zxM~JC)R_kaO>J!>%ZML_S7?}|S5)+99c`0kR05udwcEpb+9dIDAfaL=?>Y9KO#npw zgh1=Vrr?HXYZQ{4C}gXHA`lgS<2-k;;yo#XP*qN>E! zL2#KTh3j`lukfU9X_lv=Cl@&Nr#&`43v#i{jy-X*18r7v8HWE>p!9s45)k)sg+qV3 zM?GKRVk$wQQ{#$WU@AybCSo!(!69UrgeXliLPZ}5Q#XY_&Vf^N;+brgk=rlx#E6P9 zY14bJK_c++&gYp}YO)kJN%ef(giidKCd=bN2-cVaAwgX5aSRX3cj!rn-X~HF9t`jf zcc@%7Nw0xqnwuE+_s@WcM?NScgW8^ro!o&yk(FrOU*!xw&Xxi2Wu7ESkvMtI@HIj? z(|EXbgCUUv0YLyriFmrh#)C-;*9*iWi@b2)3QuK1n~lpfS>h_sAn_$2k`%j}jRKb* zHti@KE?7{|{;PueK9l4EVd7~3e7_9#ulqFixL9xW@ustkzCS^JTbxYYp*IsJ`@7pX ztV#T!#=H~Y*^4~4Jx2O+iowMsC8}I4>LOX`(aA^xD$GvD$$e8n*$rZBo%1L9)Svb7 z+LB-fl()25{TLuE+B+>;(-I679R@Nr0x`(T5`w+yrI%{^*=)u*-WVOJOBbLA98MG^>rJY$g*s2%zD zJ-w9x*kX+d4sR7qIYt;@2dlgSptf22x&T+8Zp!Ap9Am$)pgA_J<89VsGJKw-8H_wY z2gAjjJ}SDOq$EB1h!FUYIthH-ArPxRjs?m@fD2*jq_N2Y|J3mhUEE;y>mK%(1N=YH zG43&lABmA(%QKEZIXJ@pKhR0G6*N!9@RJk{x162*<$Tzoy9$Un)xQni8jkdkD73?aOmRWVv<54 zBM`|Wz^6wosBy)y>At+g>5ahf%|%|wu5)&uOaD)S4}-W%#oV4C@9CIxDTcl(&<5fZ zUM&gS0Bc zZg$58SA!~7X|Rlf!UmVQ!jq9_uuqRV>s+8mJqoSr65!EbaWl==0W6^J;*MI>g^wHL znRqkMQ_xZg@^cx=Z6BA8Qf*tbh?51v(5o~hdQ^L1m{XesImS6`l|p-r&wzMcigFOW ztNteY8=%g7{gcN(*mLNNg|)Xbs-oW*;2+hA&nGGDQ!(D8q6?jPyiXHVH}6$EC7o9% zrxbKYAW8zEhTg1=VvE&@MV|kiGy}gIC%?bQ)c!CTTsA$NzC;EteFe}i@W^P74UweO zQ&FWwQ?yy3Pd%(;Xd>}3NugoN1O+@Cwa8R@f*ayFW&E7#=_fTkG3;UO0^Tp-8>^gs zUyZq=HXTnVeozuzcCiDO{)|C<2gpDYjD+i<;^!G3?9-@qsovS8l9BlTInU&oQTE@a zV}9Ppeus~r9Ar;ok|Xs=jxfd1bx-j-8HS@~#}EnfRG1}3dh2^FFo{JAhdy4E>Tc6w zj%WC{Mv-lA_`fljHo=@tKqt#EV_Z+@y(ek05=jvq1PUdlDKSl%86D96%?n0jfm6RS z&H)s(_qSMMb6?Sk6DLQGQ4};16lkzSk2)?rG7N5kRSGH#kzI#CVUimF`0DY0`2Y3a zQc$aH)_dU`Y!p;Lu*_*p(ll8{ppc?On{^;mU|6(ivdk`C!xAsCjU#l~*!uJTdi~8Y z!ZmOEf4Tn!CJ69xvFOvl$7O-%3DbIAoUl3Zt2O3X;>DkQ!?Cyg+P|7_kE*a~h&HRD z&8m=*vqgY|MFTxLWR7t?1MHy7hK!L@T>5rEpf#93B2ZL^uCwZ&`I#E?p9kIy;z*9M znu=c6iTMi3g(k~yP|&LqzZf9%5?-gGrvz#dr0V140(?y;`Gz#*W8ha!Qhg2cKRa{= z+N}R*$l8#c;~S<)k~RNK4j@h*n>H>MWp<#T5QM3P0CcFJpwkU~#Sn&`?xI2m*bJyo&bc0jZWONX-iN$Dh9P^aSbEq zwYOQcygrRgl0pz869CFR$L?1)r4SCC?^e0;MU(UwE!tmju`VVl+@2uUFi7Cg`?)r& zH!bpfyhl@7LEZ52`c0NH8U{VTo`L`wnmR|!l*EiqY_LcD9>RlbOvNNcc}^e>c368% zK{>W5ZSZlTE}u({E6K>q4KM0$>5<_#fQp`6;g!r~o+!+7az~AYOq+^#fk!T0;mI9s z)^AiW_V%dHc{tN5`WJn?f`<8{0fFJtzs1Em3Ji3pTvgG&q+)!)q4%6XX}k2FvS|K( zob3Dtvmebe_N_7YSG#P?H(4D_i{Xu$e>v;XRW~E(Et*o|vxmEw=OlF&aOg12Ez}6D zcVcAmu!)mLBgQIcqIW?*(_raPoI+j0*lE)_2qYRTzOzsB^*-+NeVX<%uLJ=eC4Vvw zpa|WHk+e2_F%qF9iS67ntYUOWxW+HCP1y8K`?xa+3I{+Kz^3uH1k?>KSs?x>AZQEJ z|D_XeCdj9U*^|pL(o-=QWLI*T)A26V_Gqv_o@MyA^4erY2t`@uMXk-6nq$;gWAUpE zmL`{Y@m(6R&#dsumx@f?3cL^}m&`M{kYnQMF14QpYy};MF1?T;LV!z^OUWn%gLzKj z;ZS4}iHv*}+P;cWD>1dau3f6Ea^|;oat9v$k(zV$wIC)X!5N_9xDP zZBpE5k8@CLf>YsvExDD@dVxn+<`u%|`XVMNR6?f;fuOp2ru(=>okVqlLsYp; zmf@XEmPQ?VOmZYJNOv{j(jc)Z_de-ie^|PBQ9d8v+{_v*MgD7{L?ZH#+!_IXv|09|W{yger7r-< z3bP+ehHTMll0pmwGu$?jXCl3e*E}r{VjDNvL+tYV)M>FyN(=?Nd38`{ZZN=i6BLDq zgAw`=?rE@ePCBoZ;4B zh-+*gr!p;X$%irA!2?aP=sWZ-_NgzKq?&EkE>^j+r%&yj8s;7!>n;zspkbOe?XSnk zebUFN_GwH>f}tw2d5h+7g2Go^ta~k5PKtp`J=Wj9#0z6-1{eGEgiFsUi`_k!p7s6D z*~cZrFg87+gjvquz{ZHt`hBb^K zkef0n|NG=nii>3_sK1z^d^pdz5fIR)RXNYM{XX@ZOj0cIQrE}UuJX*`YH)b~B+(fm z9^iu~^I3)`cXG#*35s_oDL$YRyRN}fPZIPxto>A%`u#TT9|6=H;~OoOM_Vizp>(^K zQZZ?=pmeFA6K9O;Hsuxq5Gp!BSVs7O+Eyx4X*n?3Q7VVa>~JOivo@`GfPdPeG1y|| zP>O*UbBuk&AoVd1`@>0!lM-%l>B|CBBMR!6Me_y~T{TGju}SLpRrF8hnfR=S^@bkR z!8rL-XLy)1d`(!iXt6?paRSfHU*!anfN>5IvVq(D;OIu4O$myTMC1j4WQu`18!X+> zWN|_#Nr1cC!+okv<%CV=#5e~|hHHQ5`M8_cy1RI_2O`igsd701FvbB_A{k^4;aV$Z zRJ7NFd}Baxmqtt{1i&0Z<|zuQ7yh=5pLggTkp!nywAZ-UH|ivO1yxqK!~};Ghprjm z>n5r8fY`m-V5vOL0Wu7+EMG1rD6EFfGKo(7)dKNLCMmDT)FB1^D9B8m`I`hnNMsVw zD_k6Ev6gDHLYq};T-G*K3Q<8F?R!cTY~y0llvOS#HB7N2UpkzmY?>rROv|VOD7`mE=I=c0>jh#cz<-~_>m(=~Hi-XEALr*lsd?CWfzlQzZ!9tWPkkEu zW2EnFv-aT?PXE#}FO4koa#6#i$TrUNhydgqC+ShA&I0S4$E8P)TJ+pESP8){9QxE* zV42gK9zX@a)QPVI_)_8_V1+QbF94Bt!{pN~R$<75N(36FP*7YC%hE8tO)35md&M9- zBR@KE)FAnKmww>mCL`9l61@kTLwxS|$DX!n|AUKt0Vo?JKjhMHTeQp=$yAq(nvbK+ zaY9wmQ-kbmOFSh;7EpXw?I%n%Q&-TUAPD`SgojnMp&X-MkWf{^lt@Fxcu6ADfZ3&D zICMmh4b{hC6Zi_lJgjIv^>FA$^HC6}GEC5w`W2qo)u%qR?7Vohg8Ej0cs;PwBr8)4 zI5|ew4H7jKj>J)3q>;@5rL-vs%_EJGjDiQQOb z_8(VxEIu&fFf@dDe-Gl5i;4nUG}tH_kMnJ`{r3Jue5 zQ*nCKdr9(&g8H{E*8OpE!z#K?SpRKFVedJ1ztD;Q8pvPuaGsDz3QWo&c1^Tc+pD1M zRf(M%U{|`uG99-P6GAP;{FLfr8Nhl#zz%N5Ak__Uk-!RP22vD%RUi@`mLA|I9eU*e ze=B`6oWmdiu5Qye!rDJ1sD-u{u}DU45;ln2L=thY!E#Fm{&q|0+_2`Jol-GMG13){ zm<@8;p|d~0KaytXYKrokbj+W1=*@Piz0SkAM?skrsCtgkdo+x<36xs{f_{w5%RM%J zug2A%tZ?xWmDrndjNj3t`qOJ%h+pQ3(iNU@F7cg#cCeIcv4TsFGdzqyP+}WPyiA-d zIYwFKEFCs*=%8W}vc*$d1eX8XaOnLCuqEdU@6-1rd9UzQ@=VfVl?+4lX^^CVK-uyD z3-GA3NQWvR07>(nWAFKoKX|RTAA9%P0X}f-&o6J|=%-gX%LZ5e6+^8@4T}~XHW=ps zQydN3ZVaFir@;yn9HL8=I*W{O4J(|b$ug^)<&TfQ``-kg-hS-e9|U;Iv7Z|7aCYm& zu<6jHMwP3~b20+HU1FrsFex$3B!}ryr^yO2(u8T@SLxHF#ylwonBXuOhJWbwe{lSV zV}JN%Hw06E=>5+zMm&-ud)QF`fEIn{eQI1m$Hc`VPKG>_=k{>dAAbL}6ktmy>f>%L zdH^M6=uxB0c5FICahxLj|I!4aw4A;HvJ~KvV&IB`Iy%UnmlNb3^0DJN#;%u$_a`X0 z9`+uIEJ=dh7R^t`$i7#goD+x*4fAY|nl6x^Xt4N#irMecxMz*C*9Q1Y9oDBp8nW2X zh&w&%(JvKtcvu&5gljQLQQ;B^3T%Xn9Kcpu7qE4>2U!LD5<8AVVE3pOVq`6Wl2p;Z zt`mRI$1A$@7-A2h$*_$;^TT3VcO}89hT#pfH|fx!8JS^AKiFB)+ zMJIuZR(0v$=i}Zb3Az@|Sb}^F6mx@%#{d;XadWXuP{bfbjBK>|*^IJ(>j(OH%y27! z@UWzZB|{08p*LA7w#1sJleo6Xw#6ZKRkMtIQzy2bro7Upaf6HX6%Y5n2LxjRal|0` zz8Y5_F0k!xhwi5&@`Qr2sGI|mGi|aSI1m>FK6VSmSwc+ z;kcn0WK3wp1R!U59QFHv_9b3K!$hEB(Zr!ck1AmVsUCdHrtj7gvNhdLGlDUI$^HGW31)J8RF1-bbzo8Smb%7W9;YXj(D5&iu`C%19Nm9t4 zMS$Q|6?zsREomOoKuroM|;pYU=2agbdt>0zf@tX>;L zvD_*eQQ=C00tt#FC=w%s9d*n=(q@ew)#&>XYKDPAOyml>9}mjxTyf~N0RrhRD5w>a zRNkUJH^jaV<``Q~Qdkb~x*l$^PwQqMchJX;tLS|deJxJrNe#WKpe4K1Mj9**tn$hq z$4F1wbm{?qSrPg;fI+G1?Hm9AAOJ~3K~y4L;li-1_7zJuYAx1lAblT~1Vz#e0s@01 zCaFjoS&jbG5GYZ%z(XS@HS~&y`>H;zfiPWEfA0pfpX*Zlwnh8CHfyH@8afF~vT}pD zjkFvvBjZOc1WbbT7zY5><~gOND0h6k9Rju~sQ;@^D;?nZQSzL4==cLc!~zxf9J^m3 z1gTNb)Hs=TfdB6#TvgF7cBrH#IOGF^i#!h~?JhM7@R}^s7VCD2$&yV|xb%>Cq!~OE zBmH2K!mCTnyfeW4v_Xj{dp28s1J#a}T<*(!Ry%f>r^QAseUV}8NMxvXMLyV&;%lr>-} zN$HC|Zr-6|_No4I%n7p~k%556)=0(1HRKg*U{RRuE(CZ^fMV{B{ zEV~XpvJ4vz?PiZUX@-K3k<}XO(>ki6F9T~ThWqYgAI%XKze$|L z%NS{EL(E&Nyds9UhBeMsH1y>Z#r2rXx&f|f(cGJ3A_-zgoSY+2m-;kk6|_+g=k7LZ z7t##w)G!_n@Rs6aXC(e;pN0YQVuSf^jO-Z&-L^zi?@%4^a7PB&Q(omXL+q0!IT5pH z$5IT4Bt-zZ#yMK7(q@G?d18_LF-A^i7<776)Q~A>VbNUdQN6E6^8+@mLlRk1F?s{+ z`u96IHWT1IEfC%`HxVP-57|FYk2rL>z@uE`JL*}!;rFPLAlpha$Yq`ks$7<7%9SQ7 zx8xYTT|uoW=tn*5S-w~N21I8tK+!N~0^Fwq{6d4J?_?Q%qD`e-WLivfvl6bs%}jzK zdw89?gWLU`+<`%oZ5&zw}|K2Aa)HcT?75@bJ~p!i^n z>{x?^C_TG~PJ$Locu}G)fJ2u{JVt^7xp2Lc9u{fJerT30sRow^8Z1!>E|i-rzZBr# z(5Eq2VB+Bnqo+(V>oGD9I&^-^rFRF&FR17bwpsmBnxVJ)xc7m$S10kPLF)G`TKCzs z23jl~sxg0eoZOm%`fQew>&nW`N{&&A%Je#6*WGVZQKR)oG+3rbjqTjF#rjpz(1?>^ zGy+DdShUD7z5y5=)*s6=_N}l8)*TR;5>xN@ajOc-muCrPi3&cJmrl zBJ2rqkV>7!*Q6M@4RBNpJgf-d2}x=GR`bJQ(||m{$0R9i+6Yt;z6XxK zgWF7t=9o=~j<=qX1luzVuN2sJDn^E3uKA}tW1p)t_lGXl8&%9hF5Ueq`g;Q8Nd@V)WwTDW@{KKAVTlT zG&WtSL>WU0+LmwR=D9zJ=A;qBC+a_g8W2=93_ILkyhMQ4QBW-)ZIbEK^8#hbAhAy)RtBLzbo_zd5AI6$9J@aO z()F+^4!u_-!KhBW9x_W{kX@50%Cbj|buM~Wcw#2>unW!p$KC68n|?AMr9i4SodnPh z@M8*EN<-^~b8}1urAT=0G&b**B*4es@>2fZZmAF&UkCJQMZ|%AbbocjAZ7a4@j-SW z2?i6CS{ku91fs~c2a^=Ppke;DLi{4gSJ`x~19}R|%NDKK7@3)X;94MIl6ncmcLVx6 zJnY}@QoXmz)%!q^9#+4{Mn<5lt#KX|v+vNc16&6{3w_s!M?Qs{Y1KbC7ZsD}47LgM z#DG8&=sw<3j9g0+BqY8EBG}+^VwT5emUy8Yr_jwYVzgLeFxcMPTw6Ly^|{ddxr>6{ zo9FrO^l4;WtiDbRotW_PKH*}2TqALBj`8f)Pl^s*4HlXny)WpPA5hWWA4+R2bYk&1 zx#k21ZVzx15kN0eLGj?`8oj1mN`z{bWv5RqIm-2w8E%~|G2H{H2vkj=^eh?~6>U_Y zxY532g^N*7T6A=mt_aQUOJo>kk{c+q9g_@s#u#Cr*i=uoSk+c|xv+H_vj zF#dgS$`~nEC-Fl8nHA3dr^r6%Uon}safB;8Lz+PpzL#gQo7Yle8i7KV z(TFV2z@bN%$|l%~K-v5M9s8vGxnmz$|Gvw8DVz9vTsHki(%T=Dih&+fl&+393=q)l~5ioqWUWI(M&UlKv3Z#=lCX7W}|vrVT5b&u*osD?T6j#9~=VZ))mgM zE%H_S!TW!PucKm+V=P*=I_%~(G+1U6z}1K$P-(G7iD}~GNRa!bb9}S^%f~(?-+t`f zzYU;h#J0eoBxM5JP2VIk45FYB5K!SFIx$Sr^dsPDP~F?G>9U*G*&&RkkY?a32B~!q z`#;)r;-D7WRF1oJzp9{mDp~`CFY&8BZb!g36hvL1Rs-B(mXWUp1Up?U)yK^@SS)}% z0sLcuiJuu#_kP|WX-EP;$Ha-y&@XOUG=d~0vChTK&K@onF>)vv(G5{ZGbGatNt2vR zP?Q0|@f3r%N#t`KDwBRl8?*qCApekywdT;94IB?>QI@>tnN{}H4nEhgf3tu)!p6F4Z zYqB_0VCo})B2d~x?8U>PPaO?&v(rz3NiOpQ1}XB4Gr?ib@^u6%F|qVttraefOVbN(>n1d z6coq9{)&oL^KsvyVO&m-pA2x$q#1Z-ikmO)Q&7?%f33v!7~vsg69|(aogTI4RrFbt#5Gl}%4JTgK2GuyPpoWqWR(cCvgpPF z>Bayy)VaQb#t8eAI9XFgKM*JTwH#xg19~Q@=RBMXeQNm}qo*Y9-f(dXSzV!=F9ZiY zEJoPJPVNN2AcajA6`cZ;=pfA|SjuV-%OSkgb9<^KIpsK~Bfq7ZALzM{QU^ z#irf1Y46D^f zDj7yz)nxh4<77XRW9*SI$#?9QIN8?(c#enljbZkDTE*eTkHxI{xeP|MU1?ZW-dQl95q zN9)YDXL)QMBoSa*>{6l3%!hz(meG499wnyfQ&&|qp`fyx*F?TQ5|aciR<;Vr&7qTs zRphyZPQr+jkZsn+M!9}5!N4avtZ$EzF?3>I=u!L87}=E~Gj)No8Yg!}#VA@de%>T~ zmxpa@=rxtt*FEgBaSER+GIci1;0~KkHco!jAh9DW$5erGf1d`I#S?WEqrA##bC$=I z0d}r+Sl{&Lk}QcSGNA=+gJbH7Jl{qv~kJ#0HhaMm(D%0!RxbdWl>5Xz-(xyY4{8PJlwHhZ=R>F?3 z)1h)Q!2ffdSd0h&i=Mk0{w<`3v+8247{uT2Vc+NDe!(FA?512Z#Q++H;o~gN@hl6x zpw?ORRn6GA%o8IG7NX6>0OS$iii)-^&%{j%+LH>pW0Ee_xcbo^)gQNLK0n6wNF+U~ zTRw(AIAWw}u*3q-AyC-H5fn|Y*H|FKFflUh<@ItechjeSC_!;eBlgug^Y8L;f8M6^ zn-0AX`nZ0K?6U#>VvQ@yI&mT3*)G*N4fCT8oewow{GAT#`!fumiiN<}H71$9K)s>D zMLiXiPqxMSQaUJK0elTpRZuoT8`)w_CMmMWOStq&QYOoI;A3Nu=!CwaqfUmAr3MQn zz!iwDM9Mr9Pl0F!xKCHPaw=kA{+Ubv+cNa?p+{|KL|j{KvC0C^lVh~9F3%0wbkYi{ zYml_(IT?gzyuNVhsXFE}KHj$k${~Zqi6o^@hI^&I*{Rb3gU~zHRZzYT;$M8cuYsIZ zP+8+_#9Dh^2PiV#i;|6%^L$%7$2au~vs=vF1)e`_k~)&6d_+UPNkKp7(k08-e2&p) zJFGtfbbV|_xQ0CA7-4V-!|dDYwuc^?2?p3jo^cZ738k-yUEC?FT*bp?glnrKT(>;T zHGh_7@S_&(N8;pO+~D$$NP>Tn1ZfSk4naZ1_-_vVxA&->6lf_0^-~hLs$srh(faWo z8=sDm@&o*Ow1yXfvyx!1<+Xg9uIy5=N5yp~J#1NIx*H=aw9o`z1QGDD$;c1i;jAn$ z?WGxtK>fi^nH{Ty{*P@R=Q>H?gyCKk8!X-HLr3}7-6jPHB7e%RPF!*5 zeoZ2uwrI1)1y(sDyVOun@vt?GSS%pWJ#6XHQ$ohM7BMxvCJZ`5 z9|mloR%QmBcw}=BdVGap3*#gyMd@ym8gpbABt;1oQ{5BmN+}C@|#}nIg;R zSBBa5Q$=Rp>|#CBWc5QJ{zXOqeSw-cNmm1WtxNSEHDaDg>KX;*tb%b)pe|+^P5L-L z>(DDSSQ_ZCZba#?7bNm)0sfapjQvl>$*)dv%Xtv4K{Al|LK0wwDVSSL@XbPalg*@J zkf7unq-2t^6FrAOLG=t06$Q1c5pyN7*P;3+!|Yw(Y?eE8k{9{TCh#$!5_2rI<4fsp zr1Y|tVT5(gw|%Tb0p6JmgJ)JbKVM@`2m~6&Eg=5HrT<5pd;UYmAK2Xg10UDz(^%1o zJrLmkWS4r7AfHH6Hau)~Bk~`%XjA2i)}@jG5J8ZtGmoa2c9|U*#9|6+&7%D-pb0Vt z#3T|QKSS8Ow1FOgOGo(FgllAq6eWh(LxUyyG#TYuHn@sJvX{HjNswWfv@+V+&h6_{ z+-OX5%f=u(`w5DF-C*HSAM2mX?6|YQw!ckK`YnsrwF*jH5j==SnO{Ju4LTQjU>KjEuIK z>>UEMHX5-lHe>jKsc6J7i8~6q+l`cA|JEomwJo$ym?y(9CTWtCB9E(39aCb4EF%Pw zHO@SzC^1EoC43xWWFqEdZWC;$$mBaB$>5tlcO1MW5a~m@ZL;sHAzAbJf9euNSav$1RW|-7@fx|XRiLxoBadh zlgB?eP-OB=ed<`WNijfz0&xnQ;bBZtZ09yK3=9&Ca19XFvN5t4Byj0RHZ>lXcx+3q zxtF`+O_u-EB=tCel4qPv^fbc&0OK5F8%L?LzyLc*Qzk)y9UQ}^Ln$% zc-ENVriC%C`R*ELezC;NuQr(fhc=bJv#57{tYVCOTM}e}7eT({<9$aUbd7|iV5EH9 z@A$Y+1-P$kuxNSo*V?R9B)$zi4!BKLcKW_^ahjvSF7Axy880On>_nYDC5ZIuNs3H! z%a(^(k^&M*XzJJz4i-rYYgtB5wpl%`puGd6YmjJ5BpRk85GfD4prBo+pnlsRNsEeA zP^VV%j8XB=WfP*f5htr^nB`0`cuGZoE&)sKTt1v+fI)We6ew*4^+=rTRGPu6L+?J7_+t$g9%!*fktqsHkRZ<T|^Op=t@L4{c|46}_Jq9|EJ*iEgd8~&wiD9^b#Di92?`$`cZi>d{ycsG`EfMvvNhi&c5(-+ocS$1NS?XOlVXtU8u8l1FR(+gIhT)&jG4}2$jxx=y?B=zMaxD;c{pWd(HO?VW7+^aZ z1~D>psA7_!r0%Tm=CziJL64e{inx+xgd~M?Lt@X(BkX@&pVqHwn9p{p4z7pESR*>| zQjPgvXtMmvU8>K3=*7r=r$_ajak77*6I(Dzz7qT2Y`u59WoKRQ|9)0qyYGE^FVkBx znMr{JaYB)Dy?7Of6h#3I2#6@+r6|e|5g{mEK*0pTi&6}5LlF`Lk`qcuo5@V3m(%9- zv-jD3@3mKb?jLKPxsjji^_qXCt+V#C*HgaV&*$?dv#6j^Wx186@7*c-QZ2Xi-*zLq#?zqGRGvM#E->)2JADw7cWKyJ(V;O*RSf=wa82N9$`K z&zYn?m1Xp7nn7}mK9HpE<=woW---wgi!?eG7P)FfUsDt>4Ri2{ zK_aK34`vwv8bRg0I0ZHH|aR;{%5i-hQd^+9DqrqNYh(!j68vX3PMpel$z!*0$%3)Hn*Df+&*07us zbE3|AYK!?g(Ar|*4+1)WrJ_CCrLj{W-q@x*-=X!7A^uq%dm5xFP%kKGodz3A0;Ot@ zdO$@RskDA!=)fh2u5LUdKbtlMPQ0y9kD0mS;kf7&-1ty-TvQ*O0RTZtApy#Is zslPNyydp`@$lH#6Z08-v?o{tMcBigm`*brRG)zrJZwgeULGi3brk!P|+NO?zE_^y- zgYyGPdT^+kbyj5%=h4~2T#rlR#$I-970(jc`@!qGKOod%{u+~-tS+VA0r1ckl|i=S|) zdR3MV0(bYbn@IYD5=k#RkljK?6Ti_?5^k11!CMg z^N(JL+XC7y?RRKc&(g3i09uU|VUi}Ew|rb0Lm@%e!n>+wgMnU<fvdP8?gT(I}B!q^gsu&)~-LaC?aTN@* z3@`aOx2WiCmu4c%h*RO}h>Etyqpg@EJ`>_CPIKF8jn#)IG_g?;Rpi^K6#bzipndYIg5QKHGlXotr1C`Ya+Xl8+NL!c@PJQ+CD-fxhY zb*SgtR2FKid{RZ5)3Lr|lRFQ*ZhQVGRw5}NRF~FRMEL25;4K1WOzE0k;(dBd!E3RV zB!+N^Np2yg;Z2jEz!cA}k8=1aiF{s*^2rpvuNTN?0YZt%pPSwLi9rsq$z`ftyBNS# zp1hWE<Brg~SmIq=sR z1~(k4{VGPg%+>F;DE_UAo>I`ir(&v-(2>YLv&hcs*d@RRc{;>>6^PIFv0D?UU(ag8 z4^8u&*@$pQMJ`?kh%M%lapylGrj{QhR%4Yg$wUe|DyA28qZkBu7MVGV^d*5RG7R3X zV}4gb+p@_uEplWT`9gV-bN-W%<2;CJBjup{E&m5fCQn zA;%~&-7!fFK*`h3ZW83X?cyX;+)6LgL`38mriV#-nN-?(?Xs@~C#tMGm8Ni6AWa0z zn_PHFiFxX*)LN7;cBqXP7(1?Gtv4zCU7PYohia&xEeaIfq5MNhu-Rn&r9SRNn~E0V zUIF<%;Db8$JNwypc9g?4#Z%o84)&TP4;7d)5)_oUd8c&=%%ZE1(XSQ05)@>bVK2*Y z+a_DdGkQM5z@tE*V@Cp^Xc#t#tWB0J=1)0PPBqwk|0p;7d4|EO336Mpx=e-=S&HzD zO1L;5X;CBe-7nc>@o}6GUxs-9-lBZg#~D{p9}V#zlSC^5Fi0)G_1ImBJmdN8GhFxl zr^fG8Q33fMlITq(W?AA%t4$S?G!jXIoP0jOY z|00jG$m979&bL+6mWughANRLbIQ8QSi~9xYpC;+6C+T_6CReDiv;mPyEW%g?p?El# zb?jLkQxPcBKF$e~lvZHk(LwfoTEH&>pVY7}27Y@j)chN((bC?lJmG9H-_S6^He~`_ z;nLg|YM`J$KcL?L03ZNKL_t(zlPAp(7Fih*iWa3rf?m0s=dJKxT<j%p-c1c1>&;~WgC7UJ|9gW?wph6K z*> zj@`Mbb-J?FZ93w9Ucv>we=SSFCQn4b7)Q9mj{(UR3+&~ET;xGkI8z3ZndN6=AjecJ zxz4$FN>E(t-?53`aRYnPrO^U$p~RKPK%7XBwFPo?lgkfFm6}{1 zSm*5N4A0xO$;DqNq6mXjV34p}nj3j0?Kb66U@gMeG|W)L@LZbT)Ue(lQ2vt?+9E3j zYRVv`M}%{d@J^r3JvP~kK29dfpjhQ;F~~laIFSgtA*?Pr}hhR~d#WFwp_| zzF6k&qGIGC!j47yvmI)m1GZe6SfsJZQ)2E~Xe=O`6a_$o4LQb9vBdE%JF%aP7;skQ zX?q*Jtf|%-p)yourQ*_jl}qcx3d)7}xiT%6rT}JL8jm+A-qpwM_tjbXyNF;Vz&qcj zT2IlxPawPye?r4P)z8kiNFu+;mGK;7x1Q&Fi5T(Qld_{svQ15{ajxakNDZ?8n*CEC z7-Sy<>{2|ONWrMP)H4m%dlM9#Gy`W9)RKN-{w;8sAsxI^P35c^8Hg;2$#xh_!Z2FWRp)>nI&`a>1%qJlPAW5vud!ZIfXKt!Ob z=w#@l$re3KArRVsowCS;1MC`IlV?Be;T*Eb z*#=49CR5c(UJCHe`gHpG+5MMg7G5O~8IbjW&gmq*zu{1Qr$_5akG7I$>@6C`W`@B~ zC-Fa2%zuzXcU<5<_NbUgr=weCgN^zgo}X`1WsNh8a+qaKlB9=W4glce$p)o{OFh$M zqc26@RxdYc0wo#XZZs)h9})aSpp144#l?v5b{#t!VDGmA+=u(vd2fxCKd-T7`Zzh0 zRHaS18Q|tXAeAWSk9Jo#xU@44LUvf^La#(F4smcUz`f3+y~Cv*3bIx}=cOj;2VB~} z4t%})zNsp@h;ziWM?qfJFpsMk0|h2;sj@7#X-2VP%f_Q2B~s)VK@w4B0e}_GkY|EC zBY)Upb6G|2gm{1A<4d zu(&i?;S{-U;JJp0f*L8P(jc+!#tK%i}AY99`k08A*SzpWQfAt4&I|BD1xS;1z@H zowmrBHP#+UkiSmD9I3N*8*pcbh8YpM_s-mH-*N0t<%=`_OWtwpO`#oUP%i3NZxApg z5MMM&A1bqzcBm5(Fvxy%tnKj@@f@Th3Gm|}W~wX?OmWMDv;4GM)YOl-G%-m(A(0Va z0{S9PVveLckW8f^Sif}VsRx-60B3QQdqsDnOkIYI7xhT#X- zIe$-@fv*@Ol?3_kZ!wp2s9p!;2HCf?$%TwTIvcCvbk;dXKYQ?K%RY7mK8~-VD_hLx zJ(`Sg{r8ge9$n%@L7+_aF!k{&%c?=55#Zk6&+e%J|A0hk^)h`dB6tb#NP~@sD=eks zO_<|Fp}+H*#Xw0G$D^B{uCns*h<5lLe&85Qih~IXCo>GbuENrtKAk-}=5!pLK;%$= zev-l^m*y|uJ9GDswijHJv@VHM1$9xw{G|y0xIlFy0+C~^zQ);f*ODY$>asib@-h!Y zH=k{sn^@#=bCU~4Mz}5-@A_9{1biZ2)1tzI*l`1R4G5OB7$HRRS%bfBQ)XO$`B_iDKP^|%HvkZ@I za$#_gLqF?KdsT(2FI3QU3tg*nbvV!1k3u}9%F>-F`W~&YsHj+%U0Qeev~8Ev@DK+^ zH@Wn+j5hR+tHBe4yZJ?Dg{P}+Y8eexJAVY&fqeJthEy^$NW9J|FIJW}#JY)Sg zyNcMRijfKNUj)&&0^A9uYkSeLF-W1HV389p4T{WOqYvBUsj`wz)1Q$<(_73x5XXi{ zYzm=EOBE3qY-{W}Fs@o^?< zEI$I`^B`Ki?0C>7w_6fz<`{W%HW*&FNbQ*B)=os2=x2|=%v1XIKC}xA!lgxQQItxa ziH<}@3QCk=e5OO=fIxK<6!yC`$3Qt05iKXkZ$t!B0i7tqk0N}jp!zo1WslY&$rd33 z3oBRTvbM!M3fji1_w>n84%Zy&x8)hvD=Y~OW2;T|>;QY65_7k^G=z?o^64A_ju<37 zxR&7p@r2UxY1>KqWJEYG;9Vi!qbUZ^uxYYEOd3sW7x;yNO^RN&Rd2CnRpR5+9jd$P ztWJVF1h^W8X_9s%QuSzW0AYnCGzd{JG#po(7{9QtdSH`40r&}xvjF3(na=w6{S)?t8a?T!qa=|RR8X%h4X z0u%+cEl>glQAyFK1Jgigle;y*JEvkiFQ8*7XhE9(qC|dJ!pB=wKGa}yxJyJ`h)IMZ zk*2@iV(aEr|J1aGb#aPkH@8?A1bLyKy|YzTKB!^33fj0wyI(=uG_jUl>d#lmU-4+a z4EQyOiNG3`s*^}*=ptTSIW9T01rAJ<_>N%F7q$~MfGv}DlES-#BD_cQJO&-Yz%a$MG5jxOKABtpNjA+4&J0q zuH;fb9pZZy+1nf{uW3(vmFw=vd;Qn407lz68Q@WauZF8w>f@|7A16& z-5N#6AP2fp5Tiu+cywq|YKMf1fmPG7id9zj=NPN?GFcA^2Kc$_UB~WGO3bfi7@|!D z6`c((BDz(Qu|99xr9##AE(y^z;3SaBSty04edh5 z!lOm}9nD~qCB!4cC=T`41^BOkZYIG0yM7{(AL~$~#%kuPGxuC8Qoa1x8~)Ivb-PP* ze~7yiT3vM)*K*aCIZ22|fY)_b82E&QcxYH%8)c3TH4Ksye|YTgTOXf!>(BoT|LMAS z<{y{eeC$It(amu8<2huzxkp{}PbQp(UYbdCX+T_at&bI`jVw2VZ>Ct{PL2g||cPlLIP0%A0v|V{7z7^+i z8FrK64wrg1z*Uxbie*mrtnhSq)rdq_0xtr5nrtz|LB=>tfl+ddMHvRF0;Q>-`oLI+ z`XvQ*Pm&%TP(0fI;nR7EKp9fdkNdPmowX$m>)$L=vp()?HH=LSoecezagJh=9!Zj4 z4e_t<&{)~UF~`TDLv6{W`B)EA2O)0mASY(Ao1}z>}VUofmLz5B-3T(H!?CH?>9|G}h72S*oPKWp%A7`ye=}Llpk57A2 z#mJ`UeQAI*vB{N>lv(^_KfAt@pzwMXW8NSYfH>mPa@II44D3`~d2TVxb+U&E6bx25 z%L0$H$wej4kU7LYZ-SdTeeAT7+>wzsg)f^+s7U}h6PNo#}5kO5d zP&Y}Rj*trieypIJY_avm7F!PmxOw8-D@8@$?bG>)OKVXg`)sl|ZE|tHigBlc_Rk)z z-}GqxR)bA1#lW&phZbAzDrd5DJjxp9h}B{%^s<9qb~QV+>J`@7>zota@%JaWnLeiN z2E`xLS+BV?M(V8mAi%vC;;l*|$0YrfK=>|=Jql_&BABVM`sWRbrX=i2e*H}qP0KUk zo22fqL|3CV_1t$|8fJ>VCP0XPaF|2)x-@UrFrIX2N`bN(;<*9-YXxFOL0k)|x_9R8 zAfOYtH0wUCmV)j}cz=L<)FA1`G`2Q2S;jcRI5&!EZWX;u)58>-T&9<4@=Ow2Gy7TP z%&I_1_;?fBGVR!6QhuvX`$IPQy~7-$#2g9o?BV$gv5z&*5#P@N5PsKw7j`$<+g1#S zi(9e!sGf_T+as3RdoS?mkf0~bFua+d?}0k&{~F+3^>CJ26wC2^ERznEUzSAg3Ghy7 z=*trRCd0_DOmNGW2iRw~*t(&}7d)D~J(_|w__5Sb!#N}B#R8ziTFI=>@{ zA`j=&8pf}BH2<4GISnG)r1Uxkr4ryC)k&W2W9MpyzBP}=WsepY_&!N`kL!_@Tjs<| z`q=UIda(9zjkP5W(`mB#k{0DZ$}*Hl(KidAV$9j(H+0P677PEBAor?g%>Rat0wF?b4bKWjWoUNWGBxR1_?3BVMe)uCPk9;VvwZB?8OeX zyhnROph=JRmWI9-;;m&Fes_cQ%OIqVg#^~Qz$n)-$t?spQo~|`n^7?_NYJLjI5$ye zgDy}3lZ>NlsnrsfDh?GRNxq5g`4J9(EWp{XW1klY!zAgoDW?1~}Fbhr%8vYz?b3#toewCLYl+eo-Qyw8-Wp@&-_n33@&k z7nLd}Jz9s_lz**5?Vcn(pU|)Zi)^&U`5Y))lIV+o*9uC@0iAp~Sdl)^NLcLpLrA@X+#q*~xP-NMVzvhY1nl_bI5tB6lI)$60_>ffa#zxXQ|3YuMMv%90E= zIUH&%agvMt000GDhIqoGjRaB@u*p;ADjn*qaE2PoBQ6cK%0|A#LN3igVY&=WXGrVNB!)5je@FrwDl&XPDmhJnt$D*6iOmA%$JUE*coE~oeq^HkJf88 zIRD-XR|`v=*xz82B~FTY9#v=gk?wV4F4|Ps=ti}SaRYhA+i`JEDh74~lv;?ltCz{a zB!&Hw@Tx;?H6pA;ghC*^fKD+Y3Ow3V78wCNDUsO_-;UQc9}n-OLHb`4^wcHc0LUqi zj_y#Yv?&XLLV){agTzBX-6XxCq6aQbKPE()PbjDtG|Z=;vHnX1O-2ME$b>){0Cwrv z_X$Mc<4|CNIR7jr+!@#ectnKT^BzMSWPm-isPwg|91aOzDPdeeGnM#!W<~gKb!ilV ze1|5rZqs{=8|YyQABQ;}>B6I=jG;Yo7FkTwYg1yD8Y?(qCBGe!5ZiC%w(0~GlLS4g zNh&l*wLu;)Gyl~pOA9Jy5@-Z?3j!9?47@=S1tFfUVVVQ%`$UTV52|Q4cc}kThx(2t z#eo(j{W3FL;z8M_Oo~1!L3%X1>wT6cnr@4sOsVK(8O9>ZIv1ovRko?f6`m$Rj*x&g&JmwIo??*wG$|2AUb@5;V}&!VSfARr z<XF}COw)d4WsGNUTCoKfIw6%GRq-usGwd^(VyF){_>FE0>~2r z1ZAoxoktehbE-W}yH%7Rj-OCg{ov!+*L6a?(I7y2#7MZA* zNh`;&VvsNaX_KvMn5P7atDyd8N)j-~BO%CahdO=i?1ukGD5(7cWnY4xgDN^YHgVow z)WtUQIHmDA^1l*HF(KA-(R zGynXy@63GtZ@)S7rGvn$1xnGQ^}@LMSf|V)i#$npAIU0bx)CKFDtcEX7~<00sba+9 z6iigK#A}Yd{bkR5*1KkY_c0Zd7^K1LpZRBBpZVP1g?K*^h%AuQu<>Z&(qx&F6qsO` z17sOtJN`;R-5nAAu0SKi&w8{zR%eYg15{bs(lB*DeD0H9oB3=4cnFmD04OcWR9HqqrI#I~=_A94+~f)%P%&BL3F*>eoSW%o7YPbT zLb{tz2H4|TWa}yV>lp?;hZ-4%BcPn3j|4dvWMh@5f5jkmG{VRCqC_wal|d^9YQ6sWR9jWw1z zi9l(l>7&3zZh&2dEJJ%$v>u!6e^=3@L|%+1JUoGTUqrO1qV931yLra$l0^5^Sie$c z;aQtp+7aL%cWGXBX#UYvj$@NcYS>DZmFh*l|F!}XpB>`BxPsQ#rrOZ3-koLmTMm`O zHP)t8jA;#PBFo7AI@S*i63>0+;D>loo-sGXYe~ZERJ6l7i5IJANvW|#V6F6Nw z?L~gbB+nuwV2q<(``=-T%u!~MVGbS~<%S~`nf?U%Qx=&=9jd?Iq2>dpeVjdqc_W{G*HL-WM~ zCF$Wj4-lYaBBDuwT8#+yfEwf(`)due5a5Oi%9cRAPA9Rl#@TZ@G4@&&!=9_Mx5zC;_*ZlJtNs#~lH1ro_89d_BvY$Ep4K}2LZfTeX zh@RLUs(e8rcUHJ6lJqr`^iXAmh=>B?WEt+N-V{pA%WRxOFxjSh^(rTb<7UKgnm$yF zz8b4T9cpiJslD8#F*n9x1jq_2-JnJxG)(HOcRkh?fNW7_nCll@TC^ymVYd6&QKJ)1 z_As@mVYoU8H_gCLZE_g}#R&1w=$J)=M9HQ7K#|M;yG%36S1Rnab3 zWZr6${A~^W-4W4+u0;LXb??mGUWTDDo7}WO?1v~+F;4_|K@7qeCdX(OO&u2}Lwq*5 z#31{+i=fg~bTvtk?;GdnuuVGM?H&aJ#3Q-N4B)uCNW+@^JCBbNd{4D{Uf`YP@AioLt z4L0Wl>XJacqM-Z?P#ntN$}sTP9vxrDdMv}ha)dAHtfe9X6m)bFoe+O~gzL08wYOIb;{~SPqM!vmOt(~YL&Hc~q>Dvnf4f7q)2382 zNnA8ZIXc!~sc83jw7(bNJ@fqsAjjy0k8?r5?I0gX)BF1ll^p}@3p+Gw9&M?hVUbk; zF~DAiyVhk5lTmKKqe+V1n>VQ73Up`ejvq?>zb)5lIK(8>D% z03ZNKL_t(Wxy~Kq$X1e`eMPQ>y-W`j7!^M4gB|Ka5z%XFtlkX-HrY;@B^0z!pt8vo zTw08AL~Dg_&9?K>byd&waA=N&_xfEijMt%T2z~T>|XI` zFL*R}t#KyrP^%Z2{pn?9q6B#^^AKgOGQj>uAG;Xi#`BZh5=8{2K!hFY%_6gbg64(z z%Q=QDf$~$2c2OWQ5y6IlVnlEr#Jo*mI?u!hZ3>?^Nx!PZl@Hfg?TZMM*naV|9tG{E z8HP?vq8#wUUUu{*>HUn3jYCy*s2^G7R64}()v*?Aa&sES;~LugB7(F>>$r+O^vri( z!%#wkvLwt)qN0xd0fBm_PU44c%4UvXnrzXcj8BIMU$of5>k{o;>XcYufhX{AGRvG~ zkUe{cIY=+lbf_ZNtzH}78tMl zIJnf=rUVxlpR>tUbgZrT@VL7aXTlV|)1k39#C=G7P%i$O%Gx zLq%_cXhrz4m#JEYfl5U9NNkzYua5}A5WgykT!C^fw#J7t%kZZ<)SWtOGd|9+M@yL9 zj3Gs6f3KoG;L=D-WE&W&uyDUlV$~*J?}DYuD?If`h`(i#UP#k_Q6P#6%0)?Z&Y^aN z{|CST;43r#5EYnoLD~>G3fh)}_7fdzYm%E#(HLYO7HJAhbln&|l$gb()m@V#6666X z2G}(<$<11UaV0iKMF29y&k`$ulR7pg8R~3OW1TitwwS;6Gb!jI%ZS)6zS-n4$q+Zh zQ`qD}lXRFM+srcBPBSRuf2U!Sjj{~SCh7UMhWSQ^`ae0;6iFmi^p-@@q`2u&+X2yo z3hJzn^N>s91uEL0Kv7&;$Eqw%S6Iw+37*0vMS>njL0?QWAn4k@V#RWW0+S@jF~T7V zj72~wk)evJB`8d57>6T*%?it}0*KdtA`mA{Qs+XvFw4+x9sBw;{hzSNH2^%Ex{uS^ z;_8(x=JuOp(g9v3&ij<#7Kk5%=t#n$CY!x$oOxk@SC)h=6@9}X8LFs4AnsC7e`JyV zQg`l`_s-lM{M*cDdll0QfCj~%77ZzzDi6}8ok{-$|Y=1BM z``OhtNd88e{`5K*+&m*)&zuVVxVQ%LfRN``oszCCkq(I6qdI&;t2ug`p52$b8mV<5JeM@6H?TGxS-09gL+%zeRkXYTvq z&+qYyTv-*w0Kt`bFZHGG&fK^8^MCKVGxs^)nfZDW_(p&`qM-g$ir#HO5wR;HhSz*! z=3m5pGhYz*&3r)!ly81}=HF)9lt-#8v%)FrY~a%T=Fi{5B6UkdfJ^fo|Hb|93g~{)G+?!TQgr05y4|V&fmm)$8%&Ep~~vY7iR9d zi6$Qa|B!J`34G0cH#h__K-{PYNi zX7}*?(g1tvAlc-yVUpa)GxkW1v7Zcc=<^Bkf2^QAZj<>+M0hkL{H8^^yurD%am7%y ziG%neiIfV;ri%W<2>*B2IrA)uJX5E5eTAhLgm~R0&irYPv7-vA+Q%+;kbS)!nzdeb zitTXo9;QN@-2FMm9<|6AA^v%Rz@hF-lr zpZ2FVx%`p}i*p9{Zz`yhb=Kb0q51)r)@+D>@R(AD-r%snYmA`@${Dsl1~dn^{X@YI2z{j3rut*NDcF& zE{*Rb>G`&b{<}R){vgNLSq)p7q@5n7hFqHW>m<$@*k{uWkfslV6arDzu`g%n9}prEG&4_3V@FBYD()hB5^--JLIg5aATW0YQ| zX;Ng0XN!JzUrmsmv`EvUjE=1*>A4&iMa&;0$bTw9?h{G+A4$>op&VmtCW!?Qj|I3N z^l2yKgSNZZr}Maq(EvIQ^;=bp@BUxL&O1!9s?7hNb7S4g)m5E)dh#$c4ACLz8XCjO zCUsR1bq(w~7@nWYt~v&G6-5-qu%=ybMsz`3g;7vZ41m;%1PKEJOb*@C)3LfMhnw&D z{ZTcnqPTmWr=G5Uo_lVn_lEbL^L;;G5Wf&8XC~?Yu8+N=%FJ#ZOVuzIK?+HPkINzM z#iK2JIveKMJ9>-<+mc{d#ULV>Qqc}|?*W;bg4#+@I5fhR*+DkM`&sSgS)sJ4++Sn% zk~#|)_}G&%()oz6=F$`@MmxX@CGt{_&X|vVmq%xBmn$GpG45`$Y?>s$5E7p1(liy+ zLX*X!N9SuAv9Q3psW^Fij;FSDs3;NPOq!wZHCT9!iqVqD13sM%8nNG-4SCnZr$vj> zoIni)!WXE&O;H%N$T)GbwLVs|$bL?+yXS7RK!f?7%T1XqW0<5kz}?L8G#Q3d3MxZv zLL){$>oiGpZbW#Eg8oiGGe{99?<{kit_zwb3apde2XtPX|`1Fs!8IbF_M?6=uw54*XSgS7^%OKgpo(*!@w>LbGE_4 z{VuJyq!@VZEKj^I#o!YLiE4%cSD=0;Cg*b(6Sw>!)W5s#} zZNwyzPSSs{t3Wi9z?P6;u0!pb5(kM0lmz`GDD2m;j`p#tImTH>18fx}^E`cOfM*KC z+CkQ)`xxI^Wp?B?Q^LV;pw=rIr%q#3+JcFUJe=}t$cd<~Q1JVuN(hq#vp^H^jE zaByjJkb8_H6!YDZxQsf(MY zLX=}=V<=2nx; z#VW>k1Zs~XtTHe6UKA46RP@j!qXS!f>=$a74{4Z7I+ldUiU>b9$DaKG_U;h>^D#27 z)3GiGK669ys)tgx{7N|3?s@<|(*6@7ttdauN3-Q{(QuiZzSGkHnl@3kW&w9FpOa(yVP^ZQ$ z9=06gjM8e(bNX3Nnjs3TcKccTV4T9<3?o0wF@8@UtM(OG`!5!KAB_nAA;A4kotgV> zDn})ep%FW*6RQBeM1}$GQxfS%MAJZ75*?0+&a$b!yu#EbAKL+?A_>tj-WU=5zdWnN z241o<%@7&JM556q-2n6d%>hAd-W0kOKpQqCm#Ba>tS#37e<+s7$CJO2M!{ERCQbp<6fNn9+@Hmev9 zRP5kTr@{$Va3%o#tbc~l+o3)d;N%?YYb0S}j=fCsTR;jGqZr~`3(SXv z%6#=;D&_%`WJA)OdQ4KdA z%`Pubf1*SE>jH6^kMsXb5@#jo>!=typzJE{3;@xgy5Qs7Cy8z{NQN5bf+XByQ@^mx zWC4T=EGEcT2H1F=K;0qGW`UP3G1&_6?M3!WpjWz?pNR;6)XV*v78xVJ3k9N2Kx7d2 zA$l^zpZVS2-XQT#N%Rb7OUGK9pztw|_GbWg6?Z;UvGM)lH;OveyP?ZL4e&6!17C#r z3wIW8&+r`WN5$`KJQNQ_r6<*%U3bZ{O&8%b|GUfI zUcBiwy{|Ewnml=~D5&oT*gmoI1HHdb1NY4GXoyFS^{iL`n2e7NS^OlPywrvOg5^zuOcyHiQp;vJN@G$V&JBznZ|FP`| zl$`^t?{3E=VF$Q{e%4BZn23m|Fs*d!U%PPSAvV*XWVp2N>rmSrC%0cfldhEgyg@c> z2IY@@_Y*I=%)E@zCfnrC5rbM!byK^A?YGprZY}!Tfu2 zjAN4Sv#F;&I+2gv`P+%NR&`>(3UGrgV^)OU@n{|IP`yx~-qfZ%?NA#_Gg8ute>}kX zOpaBnIxMGb8t*WO)24jXqmvLQQ#SSU16-*Szfd3wI`IT3`4suL)|gAgNcRhr|I)GE z2lAc{%ZC!=Ul9@>S26axG(#P0&LDn~kA12`*gC&#K)D*Bcti)n}Edqz3) z1xpgDO;R8AXrG&9#g!rceqg_b;Yy+x=$K95 zv6FGkFsw>sq@tw)0;!T&<5L2rG|Y)Cqo}=_c1gq{2QWxdVP+}79?vjD zl^Lm^2#=0#Q@?VYt*;4i-WlRw8qlsuzd<)0N4%ckCz$Yn`X@~~$GluVK~h|_gqL6zwTbdpJdOm~x8<%c%4 zg(L%mZOUU=MrDBa@-#zNbg2GkfIFz5yKe22<#fVZ{Ev@yu0V>+?l zHdy>S73FAvyP`?yQb{mXbInE;z5R#A>8D@EkG()5rWQdJ^lTsfpbG{TmVGQq#a$-dI2rUiH($TId~ z5O4G744Nb_(Xrm>W8W1K{%eT)Kt%Y-h%ncoa$Lh`NuWa|dC|l+kFEo%Vv#!(5!~$1 ziZTqJS7z!_A4h@cs7rg*2xsn8P-fSBxBnHD)wW;&sw9dc+5Wf)0on7{RCKTpNn zqhpSSs7YYSrSn~j>}e$qUNgw1dm@6T1>*h;gRd;n{A!2lZ{y_7^XR0W7Rbg!3!;N^8$4^M*4L&mAibLH^s>8Q_(9vov(PbFO@{H!9pQP|G@zF zR25yM7+O}*USw0-q+$HGP5lK5+8W@;Cu9GviBHF_FJ7_OdqBTTMf+Jqv{n+WYEojD zEqgoEPK^j%iPXCeaNW7@0&AJ%0V&YLD5p_pjwU6l%rMNUT8%l?Brz|McAV^K4d%Ci z$QmTpsi={Uv#-wlS;-y{xkH6EWh7CLB{#-A`xs=yxhgtss&9;wdsB<0)C$giGQhc8 zC;pBQZ?{eT?KbsQ1=hYu$GX^~^My8Lkz>VYmpS&f77IU&)7O+p0Yn0!OQJ=IOzN1C zOY2>AW@VP~8y)K9kigS0f1{#ZFvP}d4U+F`Q@+rqfkd_}(lh<6+0RFm|3%S>7-W~ah& zQ^OJ}+7Cl~e}E0|^s#+`7?H>-Jn!&E!^Et3W|f_I#f{6 z+LQ6bg8Xi_=c!5#60$$zZju?OD3l~S%~Ng_LNx{JWkuT1%Ug}2+;y0p*#m^+t7P*f)=_D-L*2G)@3qeTF0MPZD!f7<`XCbNg2r`yVVX-$E z)KS$XC+Xj1en2skAEMWEE{mm~Rn%!_I7&&Likd6!lA+`3#t~b@KZI|)eQDplz6iQSMrCps4LWO}>A3x)j1}+TOzOa7 zf#Cj|8hkKYg9f=Kr{zJIxT{CXN>#2JGS9-HX+KB>F(wv?eA&AKU4?xUWQmF!te{iIH;sHN8VJ#w1-IxutJFQ%I~XTAB59I64K^0EMHrO# zo5Um6kxt6gP<8292l-NBlBvRO6^707f^uK^6yZ=v00wKGiH-obR%OM$uvP#&L}YGg z1imfQA&tcN&&M>r7kZdbNjyk9w?ylK4%kv-OWm@upy)g4xc?-`KSJt&jC62?S{qd| zU-G~cU&Q0R$qcKYz#Rxs>LTr>vv z4oTSzl^KwUN$HC~zA48{*}DAnlCw?Me4!d(@jxdD*1J9A$vje|ponUe!$mvpmkMUn{!e)S zeZ&}x+zbK+t9{*2$s#iYc5Er^Y$1U;`pO$Xr-pb)v{=y(yfM3sCYntOz}-WwP_Pb` zOYK-^wb51o?!-_K)_Vi--6~N>!6TnA8!V=OP08dsL0}OUk&?Yag3Brr8B5-W`UBCp zUm`6SFx=zZ8SIoh&HYVhzf0vpLcHy+Pe)zvel>YLH$XFh0hlqMzN@w0P8Xihzdr4l zOCp$j=C5mi%c26&Svgx_Ft+)T&M#Ot4Lht&*BDvTd}>#d1*^Zl%3tSiUVZV$#a}#U zy7=O?0olUaPPVvB9-|j__6<+66V_h8|8B*;Rf3OMzq3jguNd}^ee?7Bqu6$Se%E^K z?&MVNOSix2VasP_?pbt~&IcwTNZFesp@{#M>-iG&`?z<$>ry)_Z`+P!%PUzCJA%Yq z0W_CPGqo_4cmjxQl4&Ace6j_f@ZfPEoQoy-Q5cJ2Rz{sU)&wLE`az#B64|3%LK4lxeLfh(Z zU1mA%_aCfuG4Cdrp2%9*GVn2Of<(KFBpwh(jgEAdP$ilA-g$>Bq#pl9PRA#yA9z2- zk~X0Qtyv!HM3l-QxT}hxAdCtnUwsl-)c-=-Dhr{Exs_qze8>Q8&RbS$0|rQx4h(fo zP72}u%PWquB|4>ohmrAxK)0V2x2T0FXg|>!bI85tNVqzt%t{o9QYihO3&57EAhasc z`{y#J&F9n=8i(PX$SWGvzo^onB=Ps&Pnl(!7nI$AnYnpa;4d=ktUbAgdZ#15n{u9{xhg~hjbt6Av7oBToC#+{(J6W zo#?)D_|dg8@0UXj!N2C;Gwaw~t|R~^-@<(H_IeIx|0%>R6Y-4qD1x1&BS!7B)rG{i zxmO&TE1>C! z-P>AD7A=}cKR z$EsV>J9_7O)+H)7@zgAW{Er@GiW*#2pn$c8afKBDU#eU;Z%1&rJ9CER#5V|q+o&@9 z=V9?YL^xqwg4d+MPvQtl2>Vaifzm@R5+TrWY$54Zzuf?Y7B&A@>G}hmbI3{Sr zgCqMv1K1C+qOHS;7A$9SIdeEO*#xmYDPby^C90|kvVFs#>o}OeR_K^~%>qXX;ffk| zI{d%%h<~WE8U@Y4Tg<`mZMFZB5LMNo)0gAF5VZuAFEpbR%ZTk6D`rOQ$c%$u$#<4g zGbQ`68_}e{Zy>o6q3fHVW{1}nd=`KCMm+KZ0H&ff7~{BAAb1@iXU?Y4wP z3LA2b&4&ZpV7ub&opwoJ9t#*VGD$P^2K0fr%oG1fYbRM-;NA*B%in*d{iZnd<0q~) zEu)G*2MglwsxU=ngg?>-FW2HQqnfuU?IWh&`@;sbjCtE`2@VgQifxkM80zf~FOj7R zmzsnljyy}en%DJ`39MY#iY*Qo&B!B!~hs~e-MZb~@Xa7|?%%7kP zJ!ai%O_SY5;}?tcQv}m$O|<0^B+t6>>Kb(p>h}Ib9mykFJbD{={vqIO&$0JzfH_ZY z5I>bcJj6Np?i)oxvacL2=94hDoHiJscKnhAd)QBP+O8ZVU55gpfH5BBD zHObYP0Y!!1F(SCn7V|LTh%*o#5c|#+hlU&s4U@0;BFykj(N0iv3F5@MtQJ%AO%|II zKYb2*nC0%TyJ_el*i|`!1mJE9TWch6#tNSNIdiOcnlAIu&KWN!&&mha148%QvPZEu z(y4fqx4tD`6~cH{%eib)H>isRy5^kC31}%vZ50%B4wjPWTb|?}c(1ZJb0n4YKnrl_ zyF+>`GN`MSs3+M3%|Z@U*i+yfUPqnLb&_!u8~v_^RzXs_YV^1Jtwl6q@!2G(^mA{tT9Q!--djX)|?Jvc=G zti2=m3exnRWpRof|2gw6pk@>-cp61V^H16~_7R6o)P>?%wqg$A|=rvn-plY95P&0vA+miSokC zPY~i;7($4252qmj^@BbLt^M)K)HuncK8Ko}iJYNVg4()?{JzOUBUZ8NcW29Ru-&28 z6ZkCf6Is}5!9y`gmq_(NNE@~V}7e2TPx=eR~}5UI$m>kdwB5B@!>~tR0HUehFBY)B|77k z?OQ|2h;;%PlMbKUD2JO4%27~3Bv+qfvp>yGLjR0sLtn23TWZ*X@P(vp)o{Jp zezeI&!^0&>R6o2#)IMiQ1hM+aGvZ7a_C-wStDGEnNWQwp zzMR8-)CpNPjufdX%ug~sGJty2O}Gds*OD^mgCjkmbzgbWYH(9c5kHBvqleAKhx!ZN zh{aQcB8Oxj(7<+fIKPsHYCodul&8&CX6NA#u3zRjDDf*kN{11s8WQZjYWCu>O<=)x zhh*Jb2eJYM+aWtic!EFal(kwbS?-rR(5Nv{AkbD-`@r8M%zdh$db1Kkavaj+qc^@s zxj14Pv7@>6Zl(PW154|oMRyxBhwRc%wBifY0fFI3j47Jd#>Y^@<#o$SorC3on6om< zy1Pwi%kwQ5aI}H91VRwkP?HEQ@?Q3pc=^!l?#7}51m~NyyGQ&|=1hDdM#47uu9^md z`%qy{44{_l!FT$h;40!I4rC2&GsULjsP6+Iu*}{rTY0%1{Y4r|l5LT&`23x*N9uTq zMr_+GU7{0?Ef;Gk^Ibl3vFJTOFieS~9i7vBp%ER^a&VFpw<(p!qM9 zQIb+iJhA>@b(Ks|;19FfrD-BTz2Jm7041sESPy`R1hNDzf#0m9Dn&?h^=4~~fJ&iltk~=i&aLu% zwS^8I)~_#bF=CU&h z60}s?Ob$$e*;f0%Y!F2}}ueu>++f`B+tZ$Z_8Wf$mYk zEm{Q-P+??>0k@n7?w(bk>WfwZ9vL7kdK1NoiqyD2B*djUo`8>A26s=-Ea$PEIP;M{ zhMh1{F>}OoqRG)BTHH`7Mmr-O9x6xVN)cIyHa`vO9sxZ9MZ9jq~Uu)!M1&8lSY|0X_O%VQR1Sc8J}f2;$ilCj)yHRVHQzLH|u z?;5XK&KC?AyN4wtUl5h2I89$1*YtktBBwI=3BzmLkD0zuIeuh1~#(vRIQmnuK@Fz_zls&RgrYc+lstR_CtRKzuU((s2ao=Lc6 z&1XTqV*gm9Jd-`{Z7%4|y>0d`LN7ulD3G(=5Rh>Ht(C}8@VzL?;qq04Jl`&{w@@m0 zK}Z7WuvTQjlJNKL1ZNW3Yn})_UWg+~suacPowExnHcXbN zHNXTJN|3t%2iLpr-hwY~T}RnT$Fa~fMJ9$5Txy;gV}urs1Byj8etD#=njT$E1)@ zoS$t=-ViR?oVgd}42B zEXDdPE|*P}{#(EsjEH*!ltyjO6=6LsF(oEz#`b8eo873f+mx#zQZ8R$-{(fO7y<;X zo~qHPG2Gia7(=@43z*APz^NlxPI%EB-vNp8-iSwc6(1)62>GN^u#OoE-zLE}aVpVC zB?T`p%eONNt>jX@>RrQmZt8U2d$Q;b1c4M8t>fhyi%s4HdOP_0KJ880R#=yR`zJ!Q z5gaiMG=QVaGda^{m0#FtmOUfj`J2Ip@iOu zgAlin!~WS+f$1sF#=}m=`${r&pq24x5r)iAdw1FqSX825*IP)r1QxlN^@$UGR1PCw zn#Q0eEUzQkDTf`PrUZz^%>Kr9Bt^#9#YkT)ByCav+!e$>f`(l&l8G3GH=x;*zWB>e zWqXO}03P5TU&4y;y+EQ7r|dH7C|@K7>MC_2V(Fimr!NtsV=gtsDzkMkCvgLI6h~E{ z&&_nIl-kp$gewHeM;cJcK58zU9d_CfEXgpnx;+E}gEHa|eB6$=*U}wamT$b<&z~&~ z>xw9$HOVf4#kJ4q6QzYGI!V#@t_fOxGS_Aa@_W7UyE3O!!bm=cVg?1x;+-;rXB`MY zlx%% zKMN(?)1!ZB02$0mB$ESFU~CYhB6YT5Xw>8foZ!V9D)S7jb`;Rg0t4eRsYkY}4Oa7O zz|VNudi=dY9fN1636soUR*gceM@qfZ#RQ9x%Aj@|)MLw}!R0^^jJvitgy25x?4KC*Zyn&-Ep2chC2fid*qGrsUm5&QC#x_JmI>n^ zA6l0oG331-u}T*`@HN6hlZ4${5+u*GgwA`cXdAm1jhnMb*RHy+&d)@pm=++38ts|y z`l!=Y6iBlv;cN>L;IMfXj=Z%XLdCD5Yw?~XQwGQ!Y_|}cy~AlTEuHEiCZ!|EHDCrP z7mUrx=@f`W1(tj?#XQOD| z&AN7$119shGLSn?=QHj%!b}7zsB2icyXhsy^%{aWy~`LquG>;)3^?7HQ) z#{LXhJ;Rg^d$?Qnd-fC9=ldl?0I9}L9aF?j3F7KyWL8vO*1r4QpB%e)E{!cn!3%`J+I%!i;i+!;f}26!Y#s)|v29)B6YP^kG$M=v+-)$n0Xn zs!e#2z#L(a9H)8*o(qhDz7Gq4{8vbmRF(-%)E==_vf2DFM|01lpS+Z#H2mk_tP``( zB?X3N8t)CFzg9scrNja=a239c;d&T^$WFQwH=iR8Oe5qm@u9sQyU+879~rxrO8uR} zhk6cX-c~qM$V|x7Utv%9+%X`ATGfzO$GehJF~5J+I?f zsINq{2@i0<7GWJ5=8=2CigkISiO?Dx@-7q=8UUWgIU~{pU~j+GR8KA#F=2lV`iL>Z zO1c_~I*PL$B(^(_4;P9fcAB;u=mp~-Kj!vW=MW6UpU;v$Q%(6+?Y|lU;-eUS2#4p7 zI4~MG{zN_90&{2`-w*=~X%tIlDL#hYh=)?P=@zn+)oSWiR>5Tqs?SR4OuD6)u9Q(} z;bpDMOVw#KRT7iW)!9EIqZcAFS!u~?_wf(Vaz34!u9&Ag3%m4SLnV_~f(Be-L9f%) z9bX?24lKeVEeeO+wg;F#I>A-7zvc*Hh8lfjwvZanUr8-&mpqP~+QL6*k72;a4IR9n z@&Uf&b)+>m97^+ZPh8lg@p-g_l(|<3rif7zQ>x#_$>_F@rZU4!|4la&W~dW4KV%%nzE^Ko>Gk_6h}Q+S?wUKuRMh zbj>N#B=v$k(@8weOno0W->L;Gta#K)0yf@EpQG8mS?O6eMYzCr=3@AYG zXYGCU2zy7PIPKZpqerXpE;(J!jG{YwR!{l1bpbu4WN>y|yKaBNVts&30Vn@KmG7Di zDK6@uAE7?t=gzlBB=nC>*(Xt<6VJ&rGmiy*8}6@lulNFI+Tc4Lonom8MT(81QDnfP z4Vt%)?ls}T`-D0arAJ7;Wt$rQ1(IP?b>N%4$O5<`g6)N>oPWNdlKEo5!)Zb0{-cY? zE4G+%GI(1pTEdE>L(x<~Gc<$>Fi!(`={7;OiAO-!q-#P2l$iCgtklV+sA`NpIxUD(SfTU&)s2I-4k^ikko+@&af*3sp8*~FnjvD{z3VHa}+hBSzj{!ZW6jr+F@ zzVvAEJAae$EgL*jlyowQIO!1U?&_O|qAsJ*suRfM0!KbWlHTR|BFr5WIi->|rI1LY zW1Hmotqtj>nC(kJk8rBBk8)cyNlTW**D2^f@tZ9W?x0o)QrWiiWu($!j%kvu!4;kn zVG=vDPlhr3>}&IZ%VkgJ03T+zbf11Fi**t7!b9>8ye+=}Wf>^x=wcdSlK)Av*roF=5?uFv^%5%I=Q(m>0 zux!qar$qeo8gFrikAW*a(6?wwV1CNU2J-QG^ta*2h+V77nV=&Szk@vZ?kbWa~H z$Io%A=c(sMhs50=U3~1|NaJvD9-7tD%Y(|7cbP{cXi94XbzM2JF@t=yN(lD{0tQV!FT_{sLix{b%-{$hhXXGyqz7X`y8 zs;g8SiQHKGt1)!b^!h`9>99~OWVhf|>_{;JR?VeFUp8ZMKK zFL92V5|y_bit(iv9}90646zin&tkzXXCLMCDUomwO>hMdxid5fMITK;88_&MEBlqcve+YbWzEf@QLjg6&MCC8X+8kWzGueWKF zLv3PuN@0uB*Gr|E0k3u~SGN*+=D3Nd`Mf_nW_ks7j_i5`x5xyRxUPReF1?hap zQ@{~}mxNw?xK+hZ@`H7iDA?Zi73VEc%&&dO$_dyPt9%Jv>=FqVIb2tY|^j;j=EHwFwTEE6)na({Nynj&j2r9Sb`dJ=(xiw%FL0>_&it&)BQ=uWW32pgyfx52G{v7JfBzd2^Y^#9_bTuv zo(x6NxC`zsi4-?6&gQzw4r;a=e_s#7;F2z)Mb!R+6lS0n@Dtd?fLdE&Tzl^*a1Qtf zNKZWm!~bN%ImY6Pm9@-FFk%4vV~*}XqSprZPoD51wGauXoih*~cO_ur&w*X~3}WKLXUYj8$h7PS*L|dmB{;+@`C1J@wQQ z&cYdnkCf13ST>KBbX%o4XBmc#YEU<2Df{r2(o25H@$8emZW8y_P9LBvt~py#6#Q$v z{E-qP@Up?FxOZ92c!d%3n~9Y9Wc?p@)Yz_~$$xRWh{-^+m0}W6m8|zPX^}06@C3bU zyv+F{CY0>;OdBz-DQm^o=SuqWG2GU;DTFJ-{1Xnv6TdWrWXXr^WIRNVq4I04guyAZ zK3}|$e*W-5v%aP;jfYRo-OS*vj6%0|NIj2Ui|%mQu#Co8eOk!ZsNmpNZ@g!dgw>C9 zi;p;)1X6=vKZEKBBR>@V84Qz4`|TT4ByCU?`6iJB0e7GLc#XcWh=emviDLQE(ED36 zEPaI2%_odOEU-MkCEt0}jrn|ShMswj`8&|u#IhFBW#fLpWUhYw)$gM^5zcRXru57=04ECa?8QxU9d^2nimlMl zd)R^N_QnQJ6DLHqD>}d00u}C3Tvbkpo9eLL3cJb21@KD1N>*~p9*h@^uLDt z3`lmi$ftj@tOK0%(%y)&m&+kxDZIxPG!Ba7^xiqd@3096tLPT36E7Q5gNBrUs`2S? z`$mv2>!Y|#QoP5@8|KRI|8T!LqE#5#q)dc2-~K#FLkQwxCgZfw$|;;FlQ}Q+zGq)G ze<0F*E2f{bO4V%$Nb2|8BWdR^aLo}FoT5LcgIMIZ!=kU4XVJ%#%wCi*b^-g=Oj4o{ z{yu>I(ilIaJiKmh7SC<$5+WwfRp=Df1PwZ)6f%OT8sw~ScN;}(hG&g3w+pczT+fmc zz0AsylA&WX=D12HH*`_piOpN*}B zX-J($!2K5@^&_$gt2lAd(KQ)RF%HIg)Tm+pz0E&!?W_uqaHRf5xs`a0w@Q<)+ZoU) zrQWth2oUI{S}Z8_!U@-*Va|Q7mfzr1CWV_| zxv_C`V6N`P&p|W*nT<|sZYyrb&~-DIUzNM1yJD^|E{Oa?PCWmhLg`5|e>ImhB&ZA{ z3wAM%nD3o@RzSD-6GmA$e50=E{+3(DbC#6t*La~drJRrSkUrpDR?y&NK>V+Ocp=B1 zvKW$H&p|8TynMJU{i^&I0*s2{#bCF{B?j=~0dc2WaHt(94f)yyU;={wsbT<SSE{$b+d zsm;B0FbBSxUa@2ZLIVV*MK+~OGF%uac(5`BbBZl{o=n7BNe#-d;d ztw_SolYO|#j*qhBOnp|jj-I|I?X^XHs>`F7De!#^LrwfZx zxWL4-@|3&+pgqJVPM#Mqz>y}f<-WsA*4R6Z)d)_MUnfdcy(42CBJ#gIgLl~SpRDtC zh%1}1~b|k$%bsN4a z-tOIZS2VUDpnGu(%$XU`>$+8JRMUN#TK?~B z_~0a*mgw`(fB;wbewp~Ep5-qaSE+V=NX+S{jFf?Q97FGW*jUCpxOnz(7d^G@cQ;cD zQzDg}cIwm{1UZJ>_4K^jA7k$Vp0(P0pQrKw8M~q1>rUX-C0Y};;=_(Y96!Gw+gWMx zc0RVBERyBFJeD_p)P8f*7O`98$yluRO2Up@`>6f#Wm4+<51aOqjJ5cyBLyOUZq%GB z%>lT)QD}_3hTIo^Z2fbxh%wyWJ|t6wLi+(^1`(IY=c#V!4J9#%xT;xHWB9p4e}OLq ztf>ssrH(@c?*c9;CU2yQx_(zM%`r{kAEIMe9p{>YW%<&V=Qg0eY9Owd)WFdf!=j#v z|1BGD7iy|Z#Slgk)j32%1z=71Mo9hhbL)p7=zEMQN>$zOeZR(P852alz3hn8tULkc zBi%`d_v0yeoei^|h71h)7pl0nDzztJqr{}nSZ)F+${B~)ykA>RWb&O;_*W;Z{c7H; zPD))*naP@h7{Jf?&RqS*g(G|7nLL+h)&Zk*50|~GgsxL~!(~zK9*Rz85vwJll87F# zw+65imuRsv9gP0SQhuJHBmY(aMnPyy>2WYAC^KlBx9{`iJ1x4Za5W>8dxjr}uGU#P zp3~uR{7-UvPglk$Kwwdke5niYTG zJLNqcy$(!YNa9BAZqw1wt;&{zB@WUl2=mj6!h&^gDlSzt^j1t7an3a9s`T9Nj$pcAGCgPDR0qDs)j z`4eSNfMpL}S|f!RR{^X3;>$OI9|LFngcmqUMRbvag>o)h)w8zYrSut z5w~ulcIhg#@Vn6W{{(uWzpE$d^K-XdzTWOB|LvY;g#3QPH0hMa6Zg9JpF(R`skSK_ z(I+Mw?L={s$}Xe&ouUYc`B1|+8YJ_?Op7)g2;*lelzLgaZuj@uzWD-Ie=1pGSj!YM zbkL>Y2*-VwAomQVx0!TyYLzBHXiUVOlx|j;oEBNLH0gr~YZ=2+ws@okZ&;|3 zrx&#e^}Qz;N)4>RWtHNW8aP<$cX>?1Kv%~G^nTwSzfa{g_XZn?0(O`22OQmXB4<;3 zR*Y>ef-MX~1dMt^hIZT0UyX=}-wWjq1Xu)*63I|)luADkg3{0g(uhZU8+~d794j3X zzFvB2@sen3vny<>{gNf-`^C$}il;sJuT0{iC5F8HqtePG=f6eF7|%lz;qsB&)7ez* zk9@cmNADhzR$WT>i{6+uybXh}Hc7&|rU9MVv*{DunE`@IBNeWo_EH~-=O5oih(2oe zJStK{3*)ngWh>4BnG4yr>lEMXR@LyE$#(jmqL{hUletPIzK=z81&-M}&Z(93X6mvLZMD6I6 z2;7`8TOGxSbr1HQs6-k$n)?45Sm*Z+f8Qv-CWs?-9wv+SstbNZ!ktqErHNDEZ~Wbk z6C6ux&EQuz{k5jR=&$E%Ws&0Ue%E*eT}SlwUrZ0+NI&^yF&nrbi3`q^a%5Tk(-4j` zp!bj~9$aOqS*$Qo;>;@Ya~Hpgjx<&)Fe2VH(lp;ofYUo%GuH}%cI-M-5Eg?npaJxM zK7Qfvaj|)_TS#!9tn{0vFgI{b^M6Lt{q(E1@Y$Y|9bqG5JH75S&5zwKKMOi74Ev!e ziyTg|DFtXIJ6_RSZ)pA!Dm)Qk&pBi_zd`u5x?fya;#Z++F^Wkl_8kMn9qqvpe}n?J zSfsBGSrQdlF^53O648P44*-lfJ_PSisubN<(t9ODxC$^LVawrelNLO+W{zn)j{*B5RcTNml0jg+ zr&Irxq1ngBwB!TpCC5iYbNl_Y69!Ka8{s(H`Q4=|s%NTp{mUx9*()}#ypFpB%d8^}|>VDG|y7v!9NE9w2 zvKphTP6aqSO3=nLVu~w@$<{-a_B+=0&B*=cD4ku_xT4huBGg#&Jc~dHoHcMa+0F>} zzLqS*nsErae{&{7Kebtod~1lOw#5v+RQygq1!3Kk>RT=;9#rLe1>`>5YyZI%zse{j zHr#F0LMy;6ZG-BgbC15Uu4}MFglPWGTrcpoLaDuOV4M@%7eDF8%qt*svZ2OucN}ex z7O{*O+c4rAJD)kbY6S(U|1bIme_MshEmM8>7(Jtv48)iJHl>a4DmlPJji$4a`-YPi zclxPws|l*9`cnq)v;_%)P?R0gh!?MPwXZMVf$hwF`S1d`{l@^M+$g&$BY9p;;jTVN zgHKI+dGieu6&J#+Iz--dgixa)m@5Mto`NtA{WXrT3C>2|)mxep&89;*&NO;gQBk$g zspoRet3$!WF|1X+_^95gP~mOCK&bj4O-)%JQ6OWxumjphLi7-2C-f5NnXG(qmoMIf zIgLjiw&mj+dIMC1h|5J~veZurK4s$l^T)iweyu4S9{Az{WJEvxQDgqK2b<)@LLBsS*x2|RH7TMc z8;#SKXaFPt?NHciZk2qEro~K(Bk_*tEjj;neVRZH0LnH<6M7b#oed} z-!+qF?x+(IP>f2{;t1!y0g5k|DxUF*kj!3?!(jEwKHSnl(AXZke=MlP>0gpfE9MxB-+9sPF||Iss)4=%N(cZZ961Q@x77Hg@e z*rjF~fl^4Y^9rAV^vaI8vZg<7DbG^(;MSpe`I`Up685e0FAWzx$CK`jVD@bst7S?U zDE{gu8nm$&Ng?$6ue?c$6!6%Lhr;$Bw|f>Y<6oT;Qk>1HPxC!Qe=Zk5dBJmT!)(?? z`=lnf_ng|aoY57?72Nwutd>&YE?a^~VWLHmJ~lJb3HY$6QqiW&N{nQGrbw5Svd7I( ze#1evmxz}?fd*59dCnXDLH1qi-d#mI5*FGg&4mXYTQdwaEceOQSiUR|W#Iu|4j<=x z%4gs(brp*B3GbgGjkO;hYJNh1MJehKxy;YMp>OHuX(dL4Rh6N({~|;dSzBdTlwLr9cfWAv!v~1$#k}1{7G@k(Hi_OlkKnk;{2+R{rw*Bth zbSU{Jf}OfdvxjsUz5zQ9_oJ03%I)=087Lj`ZL!$-tE{hTF%fzVFZGFH-kt`LbKSc` z<8p};<1`)M7MjRp6(Jv=5e+v>t9VrSf1>GRr}?Y6ehodAoni{ogAGfKRZT(k_b7-5 z)wG@8F-hX*b>2o zo4#|d@7HuO?+Su1ns=NyP+wbHgou12k4Tek3|a}gWp-ZD{f=gMn8@lqzj>n8v2$?Z zzUBS1+ncGQqVcXz?q^_we%!|8d6!MlEEImPI{wR*3CbtmebYdVT^ATBCc<#t{S7Q; zu&@2$tD5D>fdTedWL2p#a-x z#Lx$`=iL%@pX2WU_*Rc1_vcA;cXU2*5|k(bKf3Q6wQw@j{`(_g-L zUWcN;c1tLGy0_c!Cw3``T5prjT1((v5)G#+m6;?d%Z)>N^#uM=b`e)Xx4Peg&*z)( z62|mJH?7hCh5+8-kVyEy!ofSA_L{#v&qZFbn}w9gOrY41IULwyg9~bF1C(FeVPxx4 z3el#CquVf!NIYV_=CwZT#!BYlPPZdL3h||6Oeq1^>Ac6;sIeErU~_#w3GmD{=C_iB z@60@-YM?iA-z7p~ArHp8I+=HWdHubsGiZ{zN-sp6Xw>SY56DE^DPi=*$!mhVsDnz5 z&C-P2nBThKr;C0oa!Hv0!oG6e7^Dm078^+ziSsQeNq|kIpnL2yZt|!0c@ux^+nvP8 zsdfiovl41=3NdmRI~Y&u#Se~Q9PBj>p_4G0qjxX=W&m(@jPz`Zx>1vI>i|Br2j7fA zqwxd!QDeuji28=Z>O>8%nH%K~J!G3DE`nJ?bz^Q@xtW&CPaZH7S(9cVm}1b7JY?|s z;)x^3e{&0?w~>qW3WnRQ)W1JI?;IU+UDE2=yMxIJp#E-Q{kzw&Ojdcpx_n^W6W+97 zJX*%Ur319sPk%pw%hf#c#VW;HO#96JiZJ;46S#ZB#Cf_`fJbShP~o}dL{ZS;;vQEN zZ<xxPHLcljVxP zR@6QfEF}^JY6+$drcRr@>1fzhbmIL5CK^_#G9ZhK^gHqL1R)m}tECk}5j{8rTHWd_ zUc0yMX!p?tT*aMO{!l|PzSEI^q@R1pT4v2hbUpj^vBaR-`JXi0VLtqsqFR;)h+)rTwvM<53Hk%djnR9>r-MgZ&D%C}IF$XTSHY-SoQa`{xyC{3f&*T(ZWB(BG$XI%xfmd zsh`&=9E)lLBbt>=&?oh&8@pw_Dxvo`a9s5d3Uf!i#=OmZt7`NdZhya z3qjmKd!q`k4;Wb)>C~jK(@Q_7gR2~3tU#F)w2y%f7M+6Jt>P~2sMIH*d`K9D|EvuXgChxZtU-43_<}W z>GU95$G73vDylvG1g>Oa-|?Gs(hYXMt+-fSIveD~$nH z7W~S*Dx&gJAmtBrj^J1T_AJR17vIv5Jjra5?vwt_*#vJ!FEH-p9KkH74?kg!pq5IS zIwexHHIvGDr2A`dX#V#M2BzHz0_W}tzarV@pcI}_F6THX0$w#Y7ys9%d*6xR6)>A! zi)d*i>YJ&QM&6&M;H+g@;))*F^gAge>P{!*Ap&J40e3foywNc(%28cXTi$$6BYTpw z#OGK>fovI1R5j(80)ze#C=j8TWA~)<+KtT4>4b{7=s;MRD$SU%nn7=PtnvO)%G4u9 z{9l=a%E!jf;*M)`VPPzUxthpVGzWWLqVt0iqb=7*0D1?$ za`aK>C_OZl^pD_<;;w&?@ye69hl_4AHvS0Ei^2RAhCXSQ2VY^Mjc?;(hOVrd; zkmF`idF*yh{sXxEc#Ne}*4m%h)w+5Lhl)-bQUz82ajV#H1^yNEjq|=Ys8sv>&DP>* z&Boom$tC)qZ1k=bLLZc<&RuGfF3vV|rEtUI`vTJM=X5)OhE|SRT8Ht8k3Po=(^?5(a+d`C z66jKXOu)R8Agp9WYc(-Oi=u;;;y@};)3AcW6?U_ipo@S`5t^q1nA1040Y6I;KU(Y8 zU1D%y8u2IEK5(lCBzo@VfQ zCOFwP{ho*4;OcG4Q+aE7@?I#scO?8ug^bb2UeMAx2#FF+EhKMCb^A!stRxEc+qC8e z!@{xx^xUOzvzNV4|gYkTOa&F{XsT;(2x`Tokf|K9n+UIc~oI_PS^s^ozfy5SJ|=gua9w zjocWaK|-R;;J7mc=C_B52u?1Qa!!Ls@CTaI@%44X?JzT?g1?mh=B)pUX)_U|l_e?d z))^%IXJlL3kz8=Uv>4buSM0%jb&o%QC9+_Z7voU-^`E-vX)67kFS@<`EPS(>u?qY7 z1^*hfUMq1~_u@~%2gm1tU}f%tZs4Zjo?QWMI9NjHf%#gwd6jZnrB8(@80X_0_P!6d ze$!=jCH7*o@Bfan?h+=`!#9>^u~qZdp9_`yUU+`(aIE^ue47_&mlhlhZ53{Anq2=3 zUH`=KyZ`Oy3Bm41*d7>YsriemfxDd*54&!L*(Dx&H>r&9QsK{=<2*b&uWuMd)8v~lz@B63a%#LSiH}D4nq0c||e{_9SSesoFEe^rmi@OJh z;!bgQclgj^#ezE}1b4SWi?$S}5Zt8&N{f3b?get*|Ki-7=Q&qg1VZ-SGqcvLHQ6s{ zwpHEc^T1309~Ud5Aa7}=wD-(UVp#A|+{R3@3(JnLk!*}S{*!CR#tEI9bu>sItIeG{ z8A8z32dPQpHAf(g9j%f}KL}mK<2wC?hNnbX6}TWelqt510Q8H9TYoGx^?oaOs6vL_ zjQUdo=T2F4RfOu%T6*YHdal{UEMAR{W(J}YZvNZurI_k*Ht`&h%hW{-_jG&nilke) z#7*j5>ThP_5!Gmc)F z2VN@1OJpds2?%^nVrI#qv$xW9*lrSjqyU!-G#kdsmXy=}$iwo(-6yG-kBmp_)UUjS z-+QpAC}u1jqAW7=#WfYIY>_3f=(0-{Q8iMYOKSGQsvMS?bR`;RPB!=SCF=RB z$|&)om;ga|?_*FgAim668TIaRE=S4M6}gd7YB5Q&-|8#b@In{C<&}E%d4~xoz<}}| zXr7L+l)&|=>VRI_I7uYnDdS3S3!5>*f$gtm*UQ~vm${-hPQw_vmO0tY8_5o14G ztA@bB@sj$py6wrlQb#q%Uld;S5&rPwMRLwp3$SHl#D!USsOlb52mDe#$u}D=zFHfQ zt+VqP{LNkYzaRNyyx;+zg;ZZ^5Ruy(`2CbGVUi(hj_fbH3rWH#wugE-IQSx#X(GCA z?Q6VFn;UEb1P6iFiv}#o7PM&>nr_^FvqPDQ9Si_u7T#-W&m$qP-*ZbwP?Gd=jdZ+f zMesl!KwCsnQ~slAH5Qg~G8}|LAo0=Vc3)Pae#Q z>wcRtBzpvsm1VcES>+fBej%Wsf;1=w+NgyZWac+ANyJ;1jhTc=GoLW?(%W9}u{L2Gr9Jk!79N4KQ%pqpX$=o2QcRB3D?! zBXUpqNmuz;XTzW^$d|lsL9L5lUPfTVFzZMJn!QX_ZxE+|jm@eneKE$Rf1vRm|9^#s zBLl|IjgNY1>X4Ecer~YnqFu|9?VzW4$y-4K+(+F4Z~bY&#}- zbxh&R;W=N|&h(%|^6w+)!kXj{oE&F)ttu$`meu)c;@E|}v}QW@$1e`X6QSk4ghV1@(5N&_t*a4S%ChfLr$%2<$D@b^U}9thLJrQFW$JC^ze&<-FSdc zsk#`=bch^Nt=eeF^mO>CLlVqcpenKr-Y`o3!kvLEosW&*yabcrRd7Fd+9OUG^3XT} zm1`uAr@XnhW8?*zh!mzyv&vJA#8+iR3#TiNJJ1}vOtXEx(xCBTx~;KF(vJ>rIrw#mCLLeaa?@`;=fe*ZeMpKOeTIhx{URX-t#B?PD^-66R8%6CjRVv_%)SJT&@ zf}+IBvN6C#geqlLX?*I9`bm3=Y`1HYOYf(3U*r=z)&^R`sUh}T>$F=N8Rfsg&5{hT z$bFe~bI0u!u>8{11J(2M)kFeLOk=|cS|#Hv?y_ee&GR1W1RScz*U4j-Ze}24;>_yf z4F)wm{qV*_rl%O>kEQ+r^uu(7cVhYBD~yHedUGkXx41l{Nja40DN7dxj^Hv+_bj}w zjp}nTkeza66No+z1MfMuX;}9`g$*=<2(gHrsfqXw8jG}J(JKikh(q$Ow4{nt3e}ZPHF1ifn)Y-v2jv}see7`UA+%^TE zlY+tSDfxv_{!#Nf92MU8!a+5h5COKLxjIP(v?)+3C`t-t%G&IC>MdO!fGzx(U|ia^ z>c=GS{)WqoexYXKs9-bAd$pAO>ZjG}!rhJJk4^sxht|LQ0a$~FTG_HxGjn1e=Z9&B z`nkb6`3|$yPR5Y2fhTLVe||W3d<^s?QtS3!={h^PPR5UbbDPn!=#h%J1SHn;rwJD! z=`RMCmM9F71V(+g(|H2Ge4cXUPdsOOSD}B=)Cp~T?}V+$mFXMw;4HB$96zUEE=qST zmo1T^peY^>=+G7M2?24+Kh9Wq;WgQBgQWB$30F?169h+Xk3^ z9c8!~LOaX$r?_C5oa1KQFU5veG8WS#l}80cGxb?9k>KUX(E&~JxKOmAh9|)}d-heT z%n!%N1JpZ7#~&*9O+=J9D5vfM(zFX*#R%={;BAIy3rdW}rvLmEB;%DQNU(?pEj6=5 zeaXAUPM8sdTm4G|1sDOj8W*+T7k=DEhu2HMndcf%6_p)y}!uZQxMx-X! z*KIGkQ9Qcgu1*{_RC7H)SP{2aX9o;dW%!(iD<7NlcUeZ(ZCqY#bUQUUU_@!=nA-;^ zzLv%Hm=in@ibRX3TiVdDF8Qk_yfCTE8+=)mInR9@w+UW`qh|3uyE0s^r1RTs(+Cx% za~HN-Y2rnSG5S!Rm#6`8+Jz5%NfG2!76vZ%zt|k&+rvX>p4%RLwfADeV`#6e3Hfyr zt5h9W6y1JHC9n|>7O8s9)$-A{au5RnzrT{8lPMe?5#{uAAY^4gO0?|rVy*9IIhjp8 zh!R63FuFJLwN(uiWm%r+!SWr+yT`AM z_=cPERyqnyaj0jI!ZV{Df)iA-2w&<|v^-$l!d#p!Ppmk!T^bBaZE4?GWnUUEO-=>1 zf051gnP>E1DnZmjOI7}s?q)1oR3)7sy5M1u(*>Z_7%SORv7-~c1mcLf2|hQ89#JF& z+bpv54K$li{W{R6Zf$<8Ra5Bps51|DA_?-Ay!WYr4oF)0*=WKoK4zN&oXPS9mz5YQrK-;=aUq((t$#kP zs?U#Dvpg*d!)Tpsi=MfITqNwgV48rDHWcPL7OhRRuIOK+l&hu(V+V(HqChZh90@>5 z6i?YuLuc52<6iJlBz`9zN;{{|piI|Dt&xlG_d<9#hSg}AaNMgU{QOO1U7v1rMxJ;! z-TE)d;(X&r38ejougp-5{nb2Y)lnfbk1{NhZD;_~Q-7IN$wV!65|5U-;^qw0qL#?l zJ}%|BEv4@ecG`7peAb(-@xxN@`M!^x9;tK~lU@0p8Ush0eK%A2^kAUY_Py{A;k=oV z`&1u6p_7^h4W2?x3^+DPH_`S{WPG(Q z^-|=(Sb_Lz;>>%dN{EHSHq!twkJ8QSd`g%Y_uHUF!R5bOj-uhkMu*`a?E@kR56SoVDiJFleO*=cX`Zq`f@rMn3@ zN>)AuR9m?u6`BfjqQ35K6N*%iFKXr58Dpc}ZtdfD=(N{$O=%#yBf%G*Nj7F&9!L}_ zQ9p*-qSiPcu0_=&4(;2a3hhgm z+$oAL<{>Ek(J+?%i%}ESvdOx~9C{Zv#;tprJGwBnG{a;y_lh(=E>e`D*8rRJlH;Rj zm$_}cobVNHKlLtWvLl%BgWHlFDtCp2-Qu6mPN7Mjcm8MHOQHbEbrUli)|mhe@wV#O zr?5*_PV7+**p58nzxTZzElS~kN{}HQ7dEpLIBGwq(rY+pk+~TC!l@lNFEQoVlvS2T zW6wldI-;PS`==t!)=t}DZA06nR*}}Elr4CTB_bbJ;E&f_^zs4+#u9 z=m0Hwn}|6oIhBN~sO0ajq#?cwZsrhB$RHYdmlyHF9XUP7^hs2J75Wd|-X-NhU701B z#{`FVj(Esttd>W=K_sMQyb4qmDG5c^$2e6*vo~enPjWrO4C{JsLUPK`=S=2L!rCWm zA^4eT`Ys8I;y_myl?Ryf;|A}aD;=6x|I8o`;~41PjyaN!H;{4x1D<{Qy>(ZHE`2sG z;m?TM>p(rHKRE!aph4LDyI5;Y;j-B12aHS;r5okX=IEP1^rCOFz{44NnR>J}b;}BY z>jwA)P&AS0et#>iY`}wE>w320_A?Dy92y&|-xgY>InXDf33h%6IeLrHAZjer2IKo@ z|BW%zfW^ht-@Njy$mMJY(Sh+eui4sRyuS5I_gMufI*M;D`d35G?!O)jZ6LyHg3^Rx zD!rzDVxrUWa*_OuRUDm#0j8`PAl_8abRH7}BbkCoc?@b>6jXt@J?ZV)`i<8ks8DOb z|1O@jVL5;PIwArxmES2iEz}yjViO#Ep&&FRQF`_ub+A@)X0VV<-V4IY=dhr3?&*lm z(Lr{g7XHC=^o_J-iz6x#f5(gp1~FvURacmR?eN4Mqu4lFu;65;2)kNhOhK0H@2!%* zIz^hu)(k1-kOGgs8{+^CuK04R@aSi83LgrJeyDKU-uO}BZ9KM~%}RoyZzkAPyZ4$2 zDL2{sYg<(smA+eCDxYH4pwg;tYzqjzI;{v<7+n)deqgW4w^-o^{)A&rBdxt7W@lOq z8wKX6X-(P5Vp%{;D}ma+G;eZ7!1fn(;(}!M-KPF0r;BM3^Xu0zrPAfH8%{@FoynjG ze`;0Lfa8DKMGcVS)~f2FKm0Y80pu*`tggcWu-L#j@^IWNMFwSg5SOEf*#ZeTy4KW3 zg^ZFw=u58U-lA}4=0t^msdozA9jDXM6Q|063tZ;VVL*EPB?K>|{ZLoebou*`{)su++ZJASTcRs#l7UR?tp7QMX(_uJBhc4C57BH?l^0`nt0p zd!xDSQewD#^c){Mo(US|xwc0Qk(zkjgFiF_A;;@)H~g8c;}G^i{)pQcv6zBt$>$}@ zsJtEUN~My>gJ-C4sY;P5Y&rIn4$*4a!%B8G?cVKgF}Hzvz#GaobQ)1F!R1f$cC(a0`IWH)+h(mi>pxO6P1Z zNUvg{oyqoQpnT|1z*ZaSg3!T?SJI=XjD!+%!Fj@D`1}mnUYmM`K;ZmLQZqUK5+_sX z<$Ged5%k*zjckXxd{;9tp-Ww@;Kl9W^l8#(tQBWF;?FAiA(t_Nno^Gfq z?D~c4j90SoN^boh4+N#L%#pO!8Kfns{dGFlQ*ffHvM7gyBsRifw3kDR$!_3_Ayc=k z_E&zz5XIy}PYHsL$vQ^@54DtGMhX+UN(hq;#k8OJLo+bExWh*Yk~=daME zRZMQmYkx+ST(f#9;bGfM1yQGg9|bI7NO^)=riAQY3DmOnAgiP?vnXts0ksK~&pL6b z70RX4(1pVmYB}{I0cXE#(d_Wu)Hh}f|EwLpN%~r_s*SVnd7~{StxZH?L!%{eTLefl z@qdj zc}$<^GVp;|GjX$ms%W$65MIJKbCTm|H%)g-POq+_#MB)E^Z@Z&1H8 z@A&y9@Qo!_DSNkVFF21M3%jy~UAsq;59oOPt!*=C(~a?3B}EM?2X1jJPaEJ4bYvlY~Y*LeYvj-ysN4BKN+O;e82^Z7L< zMm%ngkTUax)eN>AewIq;8ZFJ(M?6*rhl(jqMhSbg5FSIG96uxROgROG%y9F*9VaY4R<}@U_PB`sl zNVGi*zRtu}PA7WCVfc79ZF5FH?kBteqCmic0)|adn-NNzajdoRzuBbPxwhn z-Csca-WEEa$(%|f>{?%e$IbV2O~S6p*Bh-Q5rB+Jt`%AC?KXFsZHpqDupJu?ipGu$ zbJXDgYD69jOC@=XnSx-AI(iH)mwTM1kOZn}>@U+YBgDtDGK-In-&QFd+&MHPQQ;pA zyT<=g2r*PcI5x~Kx8Rb#-8hMqE$&f`=IB2=)L)KYm@PvLVPa!N%zX3D`Vo@9Ii2s%=-zBe*nFD=f ztt#h?SH#Z$Z=L2Dh*ped4o6-PQYI0r$^gD{;?#P|_tC36LBmn_6?K5(}z^Een z_^wYztRF`!mMe7J=DFqc6$%+C{2sqtob~?j{R977dkpT}j-8o=iBdKPKV9$jg3^Ef zIa7T2mmQ6KqWGXIlSQ!i|NHTR;5aKte1?4RPyC#m{l?r>k>3JmBWSXkwc=lCGUAT! zY8nx?gXo zX#{((bA+Dedpz-NefG+d&Pai4-6>rlS}ktL6C?WXZTRV+39Hp-IlZ+JW??(u>Bll`V>?=SlQmZ{|d4(`9mTUB)z?6b2qW^avHV;A>8F^ zxkv^Ifz}!3kGP6IQ}p9B2(&rYo`SSicAT^Rm)CJF50id$>baA4kHD5K_L= z$u4`Ufm7d~5$t1Ocl{3|h|uhtZRF>n%Ygd36hy;t_(J7n+MC*QO5wxy@9pgL8Qx=I zb%=-ThkZ!j1!CQ)@1fND>CWI2>0PS!g2&W8SFE$AVVVr@M(4HK@^t)vgz5JIl#rm( zo>QFS!M2__ky-C7=}*90bHj^=NUq_L*f@Jh?&L4j_rM85z{~emgC1yoc}y?5&e==5j7Yjq7sj$|Tk5EEhr4%+xv@|1nsInbjgb)-pz zkWb7oP)J=yYHwCSnype7{v+@nx3#jSgzPN%`M+}ntMAad_&0=={Ne%ok*CMru8Y`2 z$<_C&HJ97g8<)5B2)-?=cD>t^Zu4KY0HTs z5S-FDAGCU{zHWFpUsvCM`veioAHTQBLe~6ii-bOD9t)yfDwo$tro3tNm*%k9d7XSq zUyqmlyEVu@q)<~FDULda591ak!R)z4qwlv+IOuiU0SRwo{t6Je=;9`pl~0-xN+@4V ze^nUHk63Q?(;zH%rxzrB*H(2VHlBWWZoBWfTvona__mG%`RPq}nA5vFjUHj`MXFP9 zmbpv@tFvb63-n_Br~@2q4c<1Ra=O#ZHNtq@m&vX=ntmck!-|PQ2N7}HU%W_luvw^m z{8Mz?rg)O1hWQxr##iUi_rdv}<>xJ{pEo;RtN&OdJ9iOQ&9b#G4^7(CDn&~oQ)Dk0 z_xoVA6yOx%UZY7S(J8*wwql5RcCC=RRy9m zCupcce--Pg1xRPB->&3q*B3|Gh3h)crR+Z-CuR>@vVqvMg-8L7YE;cUCEQQU*Rq-9 z&-gfG{IaZ&yHb~XHKCDN2&6aoY2f)X`)%t(ID4nzug52Y%U8ADgz1NLSxxHwrH??B z_$56x(~r~?IJvGR&~dhraeqciSD$s<+7{QJr876$;Hd5}NYqfl3m&_z1)>7)?fiR< z;bqJP_(waoB6ELXzo*>CcYoKWi&ogmk@r&}g)!6_Ot)F&G5qp%63V~O<_2001yWH? zCEyU97c#-6w&NznlNCt{k8@y&n}cuARsKtDp%+WJSkysn_-fOqe@t33yvubm{U+}A z&#;3m9yr1}6)BrX{2x%3&XBue?*s>EY_Yiaa9f`}muF%T+FNETyrFjuloTVNPw$la zwvK@k_m&k0-wW0sqW;oxwTj>;q{*@*DzY6^f35>{zt}x=b?N&$C-=)sF=4C*8g!ie z{c0@Lh}$M)rM#x$aI&$+8_NIg?llF!)nI6LX;jm5%2V;9_Ex8q{QW;{Yz^@gESW|_ zq_<)(HY{Fr5S6~#V_r}5FF@K&{E7HtlN=OGPX?ec4AaQxCj% zH1gODKFw`{@{w9ir0=FJ>}}s}U{Fbieo6&XB>u@N9V1XfFw7Xeq(2EAgF>K&~Vnk`54Nmi1rFG*jzkxjDkEA1o;PvY$FG z1BCCZO-1@SKI#7AiP*P$H#A%=wK2b0=o7{`b^n&_q)MF+$OY*?!!gTJJl??;!*P|_ z0Q8DV@oqfWzFe8WgUDW=h6+`A!R81ZQ<0wArXkFmCpo>|g+|NCIN8&eK+E$KB75Uq zc{wgXGBnUZyL68F5O^fj60z5IIkc8MEKdDoNj8DR+sLUyboWOf>{jOC5>kqH(lK$f zeGx$IpMHHVrijD-+?Z}MBVxa}+{%;fO)$j=>{U$gZg+^L(a;HuB({IIY=4o{-dQZg z;cXm*<>m8Xi~bhAU{{01t?|rm=X(sBge2h$$SmwZ6NmjTq9p900yrm{`{Vz-C#1I5 zhP00Q9eB?Ht^I56j=Aj_5bB zL2d>jDIw3->=9hD?N#tmN$MwuNHyls&SzYytM;&iZS5`JfXVgoRri>m?+v0Tx}3ag zG=kScSKTqbsJpuED{2^b{ZaQt%?suPPxVPVoGSI1x`b z7=&{3W+#dSC^Kiy*FLP<>`4o7&}^-Gk=Hl%c;TTF77gbQ7Ppe=#1NOcbAfgeCZ@@TSr1xwL{5)yA-APnW;PBZ@^{2hHLr4v6g29kh% zb@3uj*ucLA1V;o2aIPVq@(lKQDDUxYMgdDl7+6AU&GK-h`ZAX&uQHiN9*G-vE zN-{4H3ci)@F1l(&qso)ZxTa^CnH;GiSLFyl>Sq0M)Jr3M0AV{La+MO2Smtexz#5$P zK{^B^e9Hd=JB`=-jxP`$RMVHOjmZxf0%Kojj?Et2>6@PFlLIU6LEs-)miSL=n&YK> z6iJ2Y9a~-Y$r&l`W+5jm(yvLB>K!DA!dS5M>Fi?0bYz4J-w$5`WD6l`|N4gg5_RFhKBfY? z2Y^SVs2q8UEL>aIwNz|J{8|0MqRs2RN7w)PLiKVa9oZjrcFGywF@j}zSeq_*T!=fI>Djq#pUK9SUSFg25DMqwt8?73l6ioHtB{V4}4 zbItyK9QG}-I8eLLjJc_X7tG)ouAg6A)aWZmi)bCrj%Fv)X@RC$e*__{ZZ44&VeNtW z=}%5?o9GKb;+trlmz~8l$YUvoqF&340T*E-X-E|Em?@-gSCt5mXf7xUHMn>@$x?}L zmhE3KFpE*O+*GMU8RI~&y>b{BryE{2cKHn#R8k}P<>B>E=}#87bT`PRE%yh(pG z0?g&gDfqI_HUK2dPA@V1 z^ts-meLKT#iLwJUp^GdsPL&@6qb{M+t7sP55FWF`IqJ_>T=TX;40 z0RLXCp?B?{7k!oA_0+<<_Z??R#HNBHeJF^O2XQk&-1-t*)o%bE`yYHY3-gw3lCiD4 z?4+N(gIsX6_@>Y;)@CX->&l$%^p_$pu&8B18(d`_Vy*N^Wic9OfpZi}{sxq4@aX1!1S-Isz4XRED3=*zdc@+fdC{7!z(xzym@- z>^D~*5bF3u_Sc#NI~99949r=Jt{^bo=WYAUu#_cEDf*+FUI;fvhv8EvHR4Jz_X^QX zJ#a}NYgN9u_wmOJ1M`aS+tMEGF3m852Z{&LdV}Byr@@)@y?-u_=m5!|0~*WrZ5Jex zz*N(u&7s6>@GX&j>TprO3dq*_&38!cc{{*fOCY2a9Q`>ErjH~Y-0DmSuR-H8mrYZ4 zJU9qg(z|5{0Y4MtL;E53lKO))`d$fPC0iK)F}LJbQ$oYDQ0K^Hw{5gr=EWH|op7DL z?a6A}zRX~F5E~1N2{a?O@vCtH)o5fK7x}`hhp-p-+{qKIK@fy)%$?(a5 zICj2lNLeVnN8xp?5FDS{G$3zFg#WDLCFqjgv`&t32#CvSpg(oWv+4#`xkem7&Ro5n zknaeiqn0QMe*%#NngE^o2k5=_);vn-oI{_C`tFW7Zjg)m#=?}lAPWerLKP54B8LP5 z#qksb)tw2(yglazJpy?GXYpw`VS+fN+DpqwglJ{gGQ-!6lGw~1SW7=Eb@2w~QGHF{S>R*rQ$P$HR z>8TbGk_p=nMAHdT!8kY~W09}cPDN0k=}~!*twrtnxwP*waI{gbD-ABp#i^u6fPIG5 zxj)@G40Kf%jl^YM<0C918b9Z`NSiGRf-o5{IDKa znm>go9$bVn{AyB8kD;E*%3za+x!MU?k4FRRh3fH$s{_{nqPiy+PzzQq2TWRfx6Hma zc%rjr(1NiLu?S}^`uvv+cV@r&s5556e=|@Ibal4}vJmB87tiV;%RoulMG)H5g6gTq>*Ms8$YDW}LK_d0*kx#eDB( zyVvsvLI5c%PDde@kEe2`Fyetny}nEg>rErBHhi-F5+OCXd$uN#Mii(w2~KStEoC)$ zDSA>;e>@{zcL3yrW#m2vJ`>Vbr98QqoVcPSW2?1c(6&n?4;7E0z*HcRdll%=IS0v; zzUpIy#&*bXGR`JKb775msJ}JaV6MUi>M34-rbF!c#BhQLS*2dEJN)Q043-H2+cOUk zn&}%Z(0$&L46Hoi{7HT;PmMV6ds*(G@Ojy~A}E3!7XQaMsPyfMQFVYp2ERr7SB>l3 z`Z}i+pgWu$WGcC271kI8pU#)vJRXJa&<~@(Az@#)g}=lE&Xh&7sjModB1JqN9*FRK z<*3aFoZ;Z`V7I{kcUNpZaR+lJFCl<3^qfhxSgRAh`#w8R!0{r=enY$2@1t+h{Ic)# zRSCLKg$bfeDXINr{lwC-BzPCxK{JCr>OO$zlX(ml9+lSykk6+&!dJWQ7)_s5Lc!&^5IQf!B54?1QH>Y&BF|*gj%OjEg(u@s zOqa#x36(`3F5^`R6Lj}R#uC)bLJIsq zWk&$6IiDXzY7&C;q2QAJe3$i%r~z6pM)^D%c+D82_2XBC9J|2nDmwZE{MXOZlVOLl z8u8+c?UYzTEzg7&N2GLrDBycSw}aexvT67v*k-g##Ey=b3<21)5<7W1oT5m_id@}MT&JF5GfI(#q0H~08 z=8FSGSGn)6C#KeWT+yLl{SPyBm+8 zt~RRk#GGA4zDVlZP1JJ8E4EfgC=?5Pn~LGde@-9-j+jQXiBb8TT9ZVi+rOx{?ev#@jVm-~jd1^h*>5X|CWrM81zl zNJR)W&^NdkNovvR0-P!nJNph__ZBGYV)*#mJM4rsA-ri5MK_U~jt1U3r zE-z4~-DcH?V|^G=Wfl$i-B6yks79vs`SkTo%Qlm8(b;52#7yMgyn7Cz zW2^v)X}w%Z`Mk<^VC7`OYo3PmLIZ!Y^b*KX`OJ@U5XwJUHtcza??p(SR_OpDw0wnF zOCR50I;(E)QN|mHMP;S9(}-UZ!!?Zvjk$l}!|SS+8!s&LS`EEY-mWPWKCE}*G{A+- z#>U{P!<2m6(3p+=DHBN)(vv{=6+@Ak7>~gqF%3#50%NWu0bkS5lng*RT?@G=gUNcH z`ySpaho#C`%PRo726%YP&Qc4ae)$z(7aLc<9Uq@RxUy>$Q0EAaiPC=6paZ*UUvklaB(-k-44yxXX{OH=g+Uik*9 z$6J=ZHTve$oEF(%G^%fr*<9od<=>KV;&?!VRqD3YFiPYpagBXMSj!fTY&LyQZ)%t9 zNZx|m93Pb<4KcOw;hcj?Opf@sp|1t}&mME-%BnDqG};uDWx!~z7;2BAy6)G%SY+|p zbcTw}IRKV(96;+y&LJ+zc(wzAbheS$=6Uv5pd_N(&4IL-fu^A7_gbyVWyoqv-;8w5`8S zC1t>nToOxhR8t*lF#wyVtg^&`Ep%1VzgR8o6#3yeS7W$OKFkK0dRiO=evd)FCtLv? zPK={85ck=s)cLMKEQSLDk06)SM(t2;e$GFJgy&3!PdEP10mEfp0CGN(SZtm{%$%6= zgFq883#-ZhezGs7rj|7?$Ez{4k=f5=#pA_^C=cuCXW1macw1tlr@2Dq%noQC;6N7~ z52f7mmypVn@vP*J$`G9*TMZZ%^)<&a1|*qC*wsfDRW1+2laHV}yU~8OT!TF+? z!wWyD7~K@C<$(Mbv+G=ivQ9E3kUk8RhI5JOeJCbZ)d+EU6x<5s1afKL8Yr|!g|-7l z=n{n+eM1@N;lVfYFJ+5Ec{F8|cG>QYYVNu9(&P_C&h4s1as^8dv-hPk6K++}%-fAyYah`(NDECXx)R7O-G6F14Y^qHfjhzK%eA5(}m{B3@VE z9JasUJ?{FYE=@jhP^OP&OOj$Jf1s61Fb$2*o=E@F9FJ^W{+{d* zECkn%Ur8dPkW9^M2KvoC|2h?0JStcx8KK^Hi{K9&0DZbUVhqH!;yl%(%k|Egp`eK{ z8TBKM1sq1Nk%~}thu1U`Z3NPOK7V<%3&PZ@Y^T<{zr^@#qz%5t3PJy=+pOy+>P>=meaW} zyy6!^YOhA2tiwB(({a)po!cM2amJVYX7WDe0`;IhtUueyz*|V=*`aR zA!|;R6s&4CP=;Yirk2i?^*SbhtI?;I;WuipgjSa>&pGH*1TvD6vV0!~YXJm_$PSiw zOh)LKMV$kF!x!z<0;?JmFTyxueuxeqp{y?8y){D?D(pm}c#c(}cs zNu6q*mkYlzPFlYVkSYo{Co@!*zSUiP2EHxL?oF!0vQG_3w!6*)25Po7=Z7{DiN6BD z*R3HEfn1d+O8{l*Qctk!RUpUVOI@kAdE3p?FRB!U0gq9(S3SXs(8r|Di^UZG52^%BlZ%uB4OKd z6p}!FIKZEWPMA!{$Te5y$`~8@w4KKg{oh-*qv@=x(hRT!4-1Hex*m3DJBG8#WK>pemmAq3>>q z5;Mfv{t0ES?9Z};GuQ{Do*_776rS&L&V3C%lfl{5TT9}$A?;~k%K$b_4*Uwa*!M%<|fQsDfP3Ho||&_r=+qIGiqlpFOOzp(uA?87m!w-$R}iQ#@E?# z1~d++Kd0VraD)=?^gLvsZPAOi6>$B8&e@h1`BBe1DCvt?(4##Uaw;msq`4OfBVkkf z+Z0ua2?MvBUl=GE#n_UBOmT3)^B&WW3QO@@ZvVdHT$jgq_q-&KX)X=)?ZU1tdU5G8 z3aKzQP$V)=b~}+RA|vRItX?^^1lY?-s@a0>vLzZ#BrodR?0V`n_{VA_wehTmZ9YG4 zHduRXA{Xv;J|qZ}375-H0?g$%5@37kphzPfB;E9%5_+V3!Z*W?h!zOp$>T&NWx6lH z6_U@pz-E3w>R}e~2AucG{x8jwOp5#Ow>mX2;mGa=T za#43rTLBsOE!@M>*m5!_B4cBp@!bV%?HFBbYpLR1*kOC)5$qb?^%n=# z=dx3L?xxAngN)V{CD}`@J>Qj6*yUGrdG<9g-b#QU0m#Rm8>#2n`;W`5TCuUW!|(*4 zpECaW_c!Jj%FckG)UzC5di2#(dY!7NW_l#A3Qrrj^KP$M2e0*U#p z3g1@&h)b8jSe;?%MfYaFGylb-Apc<9k|#8rPBN%U5B!@+%AjP9E)QLm>yiTUs;j}Z6mF}wC2jr4dEOLfTsXg0VEV3`(Q$Yr% zE9X5(;c$+GSuRhVoT*t)S>lEQ1(>BN9^MX2{H!4f|2g4K&iC0M4d0=BV-#dxo6M;K z5LFd25L0Y^S@gaFha);KrMT2%rRmFS_|IEl>*8?h&y3rkPGK2eT zh`+1N4y?68QCBi<)S9a=R^{Uu8<8zk{!97j^%1bB`6ur$V}&V_i2x_)`!dZrcX!)GD=D5C}j#m5=^ ziw78iyvDbVZNS4G{6)!^2piAOW>JkV5K~bCP?o5WwAGlw`v5@T7#jh=wYoG;+=lh(e>Y`fhto*1O9D zybxecg)4pBYC%vY8wk1I z!(AGg5d@D_`xkWp*ymp$2L@B))S0+)2%L#0sa>J_do`NKDJU-#z*iB$T1OCDEAr z4*b+@7L8Hdg_VN^2KrJM&`HSe)?NCL#*{K@9GZLeioQm>*e-118VKB0yGD8t)Hx7$C|_2b?Q|*sUo#`i-1M zXO(qu!s1vTT+#+2xA5D#P@)R64joKF0M5WAbq@Euqc9gZr1B?CniXX76)T8;e=&AEh-_>$hO}AXqfQdubF6=Ko%R%y+PG^F3v0_;%CO zR2q_~k`UC^yh^=DjH0ZnAt{nF{Qrap|8fX4&G7l=l74FA8_k_cb67Js7!#M2Had^< zUj;(mvDB$O>L)w%i4`G9&ilER4Xu&TFU{0lsc#5zw!w=;=DOyR1T?|WG+=VVFp*}R z5!+wCTE>gFMM&YT=~Tl_63I_|UJ*vs1Rl3z{f`Y9P503)O)gA%NPuyplBS5|ZFvl; ztJ@gNCl(z>92!&3K5g0JPQr4N0kWhZ7;V_@ov`341_m#u?eR2a+34Uh=-~mpQM)U& zL;tnx4AGpd&r5Fs7^uH+_2$qs#yA{q?eXS4yD3CYJM^m=3nS9HX&UX$J3IK>9 zxa1ryUvaIt&jR+13kyM458oX+j%b#{vMhYL21hf_uGitSp#quHd?r*Umnf9 z8o%zH2d8?iLa+Xwm=8v6vV{K-D%V)cCqd>4P4<08+bqK5-cwK@-F4Bc=$DcO|7V27 zFf5Pcb9=tEo=>7PM!LRni!`c5W|MZ*Ra<>&8NnCMVS8C@d~UUPsLO{(RekhP;T@K* z*HXz@Ey%;r`k~}4DjTNt=Sg>f8ci<>ml_;{jA79OR-8yJ8l&-#@{JkA9FN1X`7Eof!Mwq{a3H-DT7o9}Q)PW_??7y5*gWx3}-;*#DL;k3m z4SY?8^cJY)R7lmbv!vR6q}bBDkKcZa&I7bPfT!l@$B>FCkc~h_1V|Ru1oy1rq`~rU zs#6iKEcUk1R0!U=cy0jt>%hfpB;BnWlDyosp09BkL(l4dB;C8FfFlWYq7ni}PTnA+VSM@LqSfBtudxx=_ zQ9n0^syzF-U(}4qQwDk0^Oxx0{2b9NfQSaZ!j~DmZvh)W9pvDjwq)ibCZHgi15Pcv zj^DYCtxF;8iZ2~v>AEeUZ}BbH7)@2ocW<_Nfs;9cbB3i>vn+J)VNeb=?d3X%J^LwD zJnUdJ-PP-Z@mq?5XFqEzG7`eTsqb`Bw!vd7NJ$0LCUa%3j~#WMZczB01!&P{ULFK^ zh{t2%Y*u$}G~XGV`);_5By`6?-;3qP(G^EpOrJrPz-hD)g0rrjr@8}y4((yjS{VM4 zT?LX)lD{&JtKR>a|9$f1YN!vzF~Y>j;Uq5?FYjOcsW`hLs03D+Jqm`DUOw7kf9kKL zuu!POW9%?rGw+v>7L&0A${slVSu5~%zC!JL@TeUn+ijPVz|p=j9$uC}hzOBI3}<)5 zsTqyVseJ64V#9F*$$+#0fA$;7CSgc?9l-{xHfIp+C?iv0%p5quMDD2jYdrJ*^oXG* zu2I)(=EEJd`?CAzTt7nWMuzJ10hJXuJ6O1mt2;uQb7)olips9^9+fVA&&QGHd4XXVGh)N&$B$goK69B8FQvJrikBt>?Wd zlg`I`+5BUKONsB$FRMDIJdMv!VW%mRnzE&RneZg~IOE$^gNN^UnEG{s)ID#y)88c0 zBae(QEBPsYH|MdwI*%%Q*J?!0iGQsRr~bgwWX9cZ_x=LfT_I1r_yJ~Uoszueulwar zALU$fY#m{wP`M>1%_;pLqd5XHcO*OuvXnE+zX8G7SfZqrmHFRi5$L|%o|*RrKQz`Z z>`7`@sL|&7blR3=!l@ujbi$1ovob0-Dj}ro9rSw(QH0Vhdg8^}nnOuNgMKA?%}cJM zdj0zN3*#R$hlc7FYxbmRkrdB3Nq~xQlHG(#4MJ<~Ud&i@l=m&D3uznyY4&OEsJ|-< z{-z<96@0ZD$w?2z7PYgxFE2@>bNR;dtGGFOr4&8v{NSa}?sIbNd7%tFgjmP%rfJQ? z=6ILQBBsb}8BLEJR~+L>cC$*}=O6T$`hu+s$s5HAd1gw$SO!F^loTjNDWAo|IVL!U+#(-XwUC|0h zM3vvL+?r}&K0klDyYa2*eB%Sm&RkRw5jWkL-WPdJETvAz0WfE~_g4b~arK_+)^49U z776Jry-Sb5pF5I85^+3Df~k0%2=~EaKjwzH_NhdYLVpFu>iNy@o*1~@adu0a5~P0; zI}Y5-kA(3-*}c$^4$VKku+!YAilzem7}V7QZrdesvT#RqYH@-&qsprNp-!XsB#aex z(DR7kLRO~1Bl=#fK3^)eT3bnkhhWdc(H)qVOxLnVh2MSaAv7cG%e z;E*tcX{A08TQ7-P$S>pH19E6TGMDPld7n8ULXn(`oC|1;$vkeMH%atz;^(mHarlk~$rVF2G`kbfMU6h1L%7;X+( zj)l-e8=C#4S1TW6^Cv#QpvLjln!=IWTj}faUJobJtEC~gU8;|Av;)tSjv*!TU6vCB zzIG27Teag#EE-wyI1C^0v%nce=G&ApqqFkL^hX+x&ODyf@xf^0StXB}F*wP=!~C2~ zD=_EvyA^L5lR;CUb?L2+^wBnXpey#FS&DZmiP=|dj8Ti!kf)ro8>V6PiZ@mniu5#4tM$h0jh$f2GTn%#H zjA1WUlvtJ|INt!kV*mMu1a6K=ARAK2h$GV@aVrR_v|NCZ!*S%6m9qL%rUGhOgtMqF zxk=)zO_(**l|8_8P1bRiL)3I2AZUVUaL^0+_1`}1cS*ed#e$7!y;C808}QF^CuS;@ z(|nabGH2l&M4GYP59MX;m1koas8l1fUuEY*Z@nPnR8NjIm7$}0%otz-&SV^&l|llw zB0B2dcAeE4_@e=cR%3WI?_#vyccp%nAhC;|9|*-KA7v#BX~=&=_5`V=a}@Xge%4aV zkbLxx7t!~h&x#GCXx3}kE(ukARn2OViBfx(zEs0nHI`Xe)%fR>-f(Y?|CurQMo!qd zg5N>5NP?SXIC&sWsZA{?IP})^*DHx{ISLA_zd{34ILDhab(~r$+L=#jZQZw0fHZuS+8`VA`RSy;^N(VK z!-e6tZaQGUuncFlU%fxHB=KY&P(k(*v6<_U=)hN+tD+PYpc5`KYU^8ZHMe%B%O{v= z^XJSH<5h#utBU;ixLWGj0G>$HK=b&hgZTMf+m>mLo9|L+gnRW8QArpvfvVu!K@>~8 zox)t{k6--5wL*Q`mO__x*2owlnpgc0vUsrcZ{7xBw@rN^AQf>FviviQ<9U65cj==4 zwq@G&re^T&Deb;w4f67RggIl-idZ~@Ua>-^H`rMtn_4jin~N4ynCtxG8QA-Oq>tHb zG;B-sJbxGLm@qj9oxr$t?h}S=OM0P0h$!U|F!z>R%?9G)g^cb&Mad>V3JQedPxpDR z6GXZrmR!|`EO6Z2>US)VS>lHy7z^EDKn)f_#ZkB>uA4p!UokPQQ@Fy&*GocnF4g6- z7(WZd=ExY(0?f4v88mZ>AtOKAMhDAw{F$O#&a+QkMmAIRIoBI`PVHOu?xw*omVA#Q z1WwX7evZ+s?;*_;?mJ7rS~K|%6W?M^AoJXvYu2?5)j#DrJnQ?*I9$?Zjtv!K+5E;U zo5Erk-&7?WIA5(=cfH!%W{AKyH;_5u1mNome7#QR$5z$Vs)=1%f9+&CI$m9yoqnZn z9XztGWARjRVbpEjh%8>AHws(5<{jEe3{c4#{oYX*)qmq`h0TNVYq6$S={d)Q@7YwU zgChUAhEfW0=`{d7?H>%IMmKm9?2H}din>9$RtgHcvb%47ufUtW1Y!>pYH`=xr;k$C zV~k;%_klwx`EnQ;Z!XyNHSy6|`8A^R@DEf*5bF+>s!I6-MTxWYNxz%X$%vzqPARLV z#DSw&PraxZGRQ+fMJXI%Fg^s=_Hsw}WnFK4&CM1m9pTWy+Wk9PWuCEWJOJdh+3Fxd5E+&8&qHUoO=ZiO{ctwP}PmiLvFZl;g zVc(7cW6x6M;Bm?^2y%H>6vvdt_q|U8M;HOo&Y}xxKCb@D=Wl2q$9bX9kK>7UAB>+^ zz|*Irgc>7oqIwNl`N3rTbh8P4uChGSBl6Jykmq))MJl&!aYZlsni z5K;oiB(F@)#TUxXU4=v{N!YPSt}C@EAbsHgkRgu8gn1+>X%O}i%U-|mLs67an&wCj z#m)8WUm&yP$`fCAk43*s9@UDY=uo3^$q4&yXVJ++T4eS>5PWd&r(kIO)p+{5pDS*t z)1OHK(7_62vR`4~En*7I3cgup=4ZRLfz0b~yf<2^Yf-YY z=(jg+`qqJ-aG|<{GV@j4g zIl}9Q`6{+TPfh+`zH!Srw5y2q21aX~xtC-1rHMPhI+Cxa+G4GJryRXlR_zeD1ca`+ zX2TvSy3aOwA8LuNpxvDB#2lR9uh5zz@H8v{@mMa>gwz{pMm~v>>QMnZ(RTe3#Rsm8lBh%D4YKql z)9_I5X~k@&M}*(z@45_(UNkb+AJlpjIh$#t^53_YxEt&d+6|8DlNed*@m)?qUWb~`}EX)|cy zF=+GleCdsWEqDNw{gm%JR`w2e(iX0##j8G%uDV|mJIr69b-tT-BO;y{ zvOE#HP4!_~swEXd z8p{gHgRndzBBmNn1yr2UQibwuL}k}X6Y+c7~+m^J`={#fcBSfXQ z$3^s6^^SI({O7s45qC$-hbG9itCv)kj2VJ#BfTC=;O`lq7#FDieB!GlN$KZljs!|b z%B24^8k@; zq;Wr}EQJV9Lsk4dd#(FxPRK{Sf0ziL zz(G(g>{ahZ)O|j08?77tQC=qKN95RdyhPMe;;u;M9B=zgJ;e$JS-4mjm82wLMMS!B z%3>%@5S7wZM0zwZlANJdq#DVfuQ2atq)tRwAw@q?yK_oF_#yvdvVdiO@xBSsEl*Qu zW{w@fyDyh0oN^Tw7@UKb8e^2gQHQ_x=wSW5Wo`_sS|$*3O7jJ1(9XsaGVlxIS()66 z)zy&z2ENIt>8Som4Zch+pMpwjlh61x-I^qJ<=c3@TOr?Dxhw z;)9HWv*ZjW=i6(BS;4*M#&t*(hpf!FLGPiAR`QsVe zauo?$t;wI)1!ZZ(x*`dR4VZe*%xW%K#%6PgYc37wdJozyF1R_ z^~Q?9ya{`*<%J2x7-@SVbQzFLkwhpZxR)#N^sVsz&w+tV6>!_EIBbh6BFUNw^S2M? z2t-M{3Y`7yk4vgak*&YR53~TDqeI(#2%HAT6osO~(G!09jz!OPvn1LFc)dluf*_P~ z&#fn^jQ8}1^pgTW5fB1{JlL?+55eWP7GNxlq1Qshst~kNFX=^7mlBoL)>OStLiRPu zcE7@GXHR z0aHa9T#ud7@CW};>QN5TYfTv>CH-g^K`Y!ip37`t-s$~yz z`^1?56E!%4#|?KT!7NmWKuZo*HA-la#LA5tZM)mj0f)CS2fztaZU;8tRAteVM}VA} z`7Hf?gX`ln&>XSmv-TC0Lg%y;!zD7XFa~t<{c|uAZ^pa8iolc1ib2z1{o*LgK6Y$G zcwFA>#9FhWQ#z$+A%dpx)F4Njfqj5L`$OEocS;ztaIzrb!p-8v*JKey*VLsgBlzT< zyY?K#qk*#Prscr*d+4wb@>O}7ZHF{Tg>a%+aBoCo$f6J}nPH6P_-s`B3Haw)IAd00 zd2cyu8huH^9-tqH4l?aebep0sFBrS45HjCAHhkWdh|5@*6nhL|8se{wSU5lTQ+`n! zkiAUV==z0NQp`HUA)As+8w!ib%gT{>{0sIG!z%~q=n(m^6O_PinYA?cas1)EM9A}a z#h}YR4cw7U4!Nex4C8cPd(5<|_zF>BZosoj?F?Az2HP4W`crYL+FC;;GVslFTa4`k z{9qAUQPutNazI>+|4>fpWZ^INbF&ODF4_tkcJ^p6c53Wqeesx&mM`oIvTLp>+@yf! zD*6vFQS1w($~RIh)6YAKn~F{k;;NyXgN(8}l4zdb1vJDvjH z2pv$#GKGta>=sfpYB+~+d&wKM^DmV((#c?cRgGpUjb;R1ol4%IFn=&3;k+`8+U9s5 z8Y|cou2yjNK0We0C+Jtpe!j@V;lWfq=cq}y6j3ZKa-jyLicu(@h+YFA=*&zn4W0OF zJ(vB%ceB2#+BP&09r}fuvqKnyJBh1ng&zF=(9VxUl{qsOo#FARAsLQJ>IR@5*ntm+ zfZ7nUY7s$P8)2kGy=b#jPyL`hf44J|Kx_dt6f2%#UKD({!Hftq!a6J)^{k`iiMygu z8@Xk9#ab01)Ph_*jVt#&MI3W+mxl0ER&zSK`D7|EzhSAP7(mzY%{Lr=$5_wd0*J{d z4h6cV!-D{DpbLX^PT=|wizHZ(3+@OPWfU5ST~E?AQ~G0l7`qn8_b$)tU7z0aZm@D_ z8?UJwY)ZHCz0ByEGVy_ug9*6Bc^HuMJ(`da$&-^^DBa|iS)7X2PPbDhup!<+dgoq@ zZf}NueY?7KFmp_8Ib;r28u-#ILge>hW&aTQ_RRq-1G0!wCDxNe_T*_W5^{^(%#RdX zmoMt36lN^KmL*rc-ep(Ch1~>J!5lP9G7z=~F!Z+XJqaAW8HH(N#M`cw_<32W)euP7 zJG9luEQkf-+=PhC<5#VYt%jUJv2$J2((q)p(@Yrt;v<8#a*k2Tf3Cm3pu0q$$Uh?^ zep6lV4P7XPJKip9=M=IWq~cT-mwZ&fDNXwtPV~I;aXT&-v*IVCO3r=X$RLmrCQ%2_ zi7&*R^>f5Mo}GWFPxw1F3YiY!5V-LXuog#UM#N+PD`-#B1C@5t4ubfj5qX1MA`P2) zEzYL-WmmX8Sz8w*XV#J1Hmb~LvNVJkOG4ag&%%ehbm@)JXw=M?}YHgrAb-5 zaPjq~IO#{nqvE-UiAs&BF;5xw)a#%3G%t-O;!YxTqlDS>d|zGsd~+XB0TA`lvc>LU z_k2r@C_@C4Yom7gIe@N`NUfY;vK^C5)dR{+neE0BPEVQZI1}&pxqFh8_+++>jr?%3 z&^(HD#y^or@I4}~D@nbkWYW8X-q@4+?IUNX;BpJFRLLHnz1Mj$KyayVf!FI zfxIo_V>y*d3Xj|MH0NO8skZ_SUo;;-08%;}DqHz$q5WCnAoVMnfsN=e`ZR3w3>($b z7`ZHgnbTJXoSNAoKOT1xvgcS3&62CgE4+iz(&pY^%%ZEx`1JJEcfdSFGnlXW<0tHz zyqpp6S$CdAOaP%7f|3G7^NL;8_SOxpj`S7ix|ji7Z-S?gT9>?|}NuJA+4NMk!q%-;M$-D$L7*z>PCjvs(p z(j6#e5!8Euo8krO3}yDz+^yI_Rt%8#_)84^dd&$DO&P1g8p0KKO8RV*fn)&+@B2vx!d2hdZ8!MsKoK)gHfKPz${KS>}6UqL?+B7 zs2VXCuX2&^al(fac(98Exr76YUhg9#>ZI$G`X?|acKeq4d{16TvI^PpL z7W~FVe5ncSE06_0ijLfoS$Ke635{I>xqi6^k#^z%!9~Swx8!8X!g%~5$J;olD39ER z|LHzE>X9{p0UT~&517hLY_2t!E^4rfG5d}dLeY(jrfh0g_>5v2-e!u%-x}BzO#mcd zoL>Z)?FaRjXFA-}ry3AwD6?tEz0XA{%1@x9gO5z~u^pUecGHxJnc3JVGQrLK`%I|i z=^uCVG@+^YG<|=*+r?C{Uc8;kt;J`!pLJcc(Jc3k6gf0zPF6}D`nOeX^;Q7LU<71G zTuNgXJoBYXTBtQ$vkSNkvkClXCj?Cy9dpl=$Nd9Y z>{?6+^Jfhy{&T?S#e@!&SbFI1hfUau#qoT&<5)k&{iQa(mQtfH9GSS0z z^oL@LanOMrY3#k-5u+?>YS{}*&DBmMX$saskk70D(_owuffX)oW_QRFYf(OK;S|TX zuYcnMumIEy1AX}dp*I0~lx3tx&z%unn}7@eb=^#Kr!-kjnVlf$W~6K#N!DK<`oTc> zS@mvV`{0j>NzmD+?KE(9&ww_jHDmet~F`{ATS68a8(U&($J z|2sl!17>;9jwGfXT7Jc`8Qzbdv!XaUMUN#W(3Co}iG?9oRQsf5$WLYv{(Z}_OWR*J z+4hH${E-=Q9=-gd9+}x@qJr8B84u4L{b51UvNvN%CcgVBh*NH2`u2`qXySvvI7LiHwO9?Sx%HXV<>CYggYQKFm)jWUdUrV4JVq7QM^_o0sW3$JS@0VD zGOTO#%iqYX?zhU@4bb^U^BYTLCHW0vdKASPUg4W6gKTkBG7TMDbCs2@@_{~qh9u_# zjzvofQdlXL70uY8MRF_EVWI!XIisEqp!Mnr*S2Cq{{GWw{{Xi89Z1Z>%53Qxo23UpmxahqAZ3gk&3a2yBw*wf_Y!)cG4fZ>DaPiwnhg zJ)pZ)l@=+m+A2?9m$8B^VxGqA>_{xd^T{^<5thZ3^b-MeFcB-AQj*D!tok?ReJ(jf zc16ZggX82w5_2FZl54tTdfuqL(}B7;Xh8Ib^|K+%ozyC56wL@pP+Ht2royN_kW`rv zevJfw_C%}!VRucB3KOjVg(fb8|D+1C&gnWk--~}IaRwg7o3&f3O}`-_a49G5z}I+E z`_W8rWFV=x-KGG-GN4ku`^pg(GZPXU1(K+ zHP3ow{%Ss^b6GrFhj>bRh6E+UCt9~&Uj8a*uiq|ClPz5;$<}nxR|q$kx*3DhNk>)X2qELwPqGr0_^CM~4_9q&ZO0JO>3K9S*a&RD#%P%WzU} zoFR_X**<~>pJoH9WJ-tDRWV=ISpyA#Sqc55ssSAGk5{G@i-rs&ZwdDlh~p~Q4<4b@igpxO#BH& zXE4!}X_E9^HyI{6SS>M0eHTFXEkSAsDCu*b<70}}Ll#k$FpdS&OnxNNkBY$Uc;Hy( zup(n9>#*uoSYsP^Oo;S%f0$=EjwiS~>96~a?5o20rW9^e;7smr&)U}Z2rg41BLv9HQ z%P$B{XDcneC%-*jDrhjFV;5@5$*cnetyr9|YaR5Mn~!aEX1u8G0PxxIz-`+a76D}Z ztassVoA5k2c*!(Q61O{d<+^^DWKRm|rf}?F+$VtFWS_xCYwPrev^e$(6z}YyL6*Kk zEpW+>`jx~f66m8<{`9po0jL~mEp4448dSe^Kkl-SNA4#6*w|v>l_nEWP-F$d1Su5Z znFB=)5zgs>%05-`zds=I(MS&3M7OMQR9*sidV=cWsF|_fUC!!@QBzTMI`bSstjy5w zzBE%7`(%Tkg&BJxVa)qUw91?dTr)qCsmx~=VtT95%Zf{4#`eb>YyIXwVUBgOV{iBj zM4usJ?#1H|XA&HXI?B?hnV>*P&O_4`6^pkdvq0tu6;?k^yCW{ur6 zJv0|@ix6d(y?Lv8ESbb>`y;9M;3s{BP)b<;`=^bn6LG)9i>`0fS1&LR$0C`w_$l~4 zjXV09Po&;>FAqE(>B}XQBxWcmRF4xD&G0O3uo=JRbvO|}q_P1x#r$hMATON^9<_Bx z2QW$(5_s(P1g;yQk5beuc?n-GP;T_Ye#myL({sbJmWiG?*cDw03Dr-y)|8FAiPBGM z<;sc+Q0TN?o7o2jst!mn-Fjj}N;ZF*?DD(2zN~nStbNB3cAk6RPPy0R`EwhFfE9YZ z3po|&gufER+|wo0`V9R>fGp$x)|23b`9 zNIF|}Sg|*Z=?%&=@oyT)7)+Yp*$srqj`p-Ll_XjZ{0Gxc-eh~bIwjaiEN|d2twl=K ztBinvUM;{ETYvDKdX)QQ!IXt%fKX?}Rm?L#IX_*oGNX?XkfFG4OSt-7HwU7PsUc*I z`jwzhvo&H44gd%X+tqufRwpTT;b4Ly4hma?RzZK~q)%m%cNXgtVDur&(rGD zSj=t)$cZ#BlK}gowykSmPGp*B!FtnK({@KDAmJP#=+UwN_7E(h^SD4Ds7~P?8|RPx zEE|dpn1GD=XiPQh8%>O>02f+|iW6^%DS+NtE|$@va1rh=P!HK#2f7vcOY-74>;g0b zwpoJ#=~HJ2$A7-yB*zJ0U3+mZv#C^Z#{iq&1A0Fgx9@8_HM6&o6EHLP=TGtSbrI|L zrzhKfS-)!aFEk%Mk;J7l90urr(f^_`;UD$kC77Cdw?&9jmY+f?iH<4}Dun*AM=FVu zWC4BjfL;am7a%4FxlhMQZMVsSf)!a+hvtb0s z#?>cl>4oZX2M`zNPQBR!fs2N(f*+j*LT{5#7J>_PZ}GVLO?mkwq!-I2$O*+fsthK= znUCw+F_>VgK55;{ZWeWE1bF~&fR6W#_uSPjh_{2Vd_l{B6Zpk%~K}G6V4B))eol5DmE-%BRVrBv)eNp*xejqMn zr=lUZEqU0Wqt*ri(UZ;Mw{$g0Nm1AphLFS&wuO|L5J%r8HluUIWgr;>BdeW2&#vL) zSCJnDhdaj{*c>_L|4x6_Z|Kk}1xWRA^>|@Fcc|0`PybGB7umQG&p zmTYAoWh7Uuuvy1}SGp@YCKGQo>%5)zJG6Y-=KL2_5~^PuIXxkabDTREhuXGYRM8F0PFAd~d~h z2bFk%5xX@=FfsDBrVzE8B5j~MJ$F? z7|x9ZhbPIjCd2_VN_;qxKRbB$#2kSs$rvx!q?%{|uc^x6;x9|4iXwqCcmKq;Zq}hs z-}fd-k~0=23Ki%j@9eWrFxZ1b zzYAlMXk;1AcmG|aBOv~Du>#w~H1mw-gL&1!483k`6*gjY^Vl{LwPX6Lk6$3^%uGn5 zalUE4A7ssL-=~a$KXf6no|?1ZdL+~B#c?UpHI4VC|E)YsLv|y_+#BD=0|e&0Q)Pn^ z45(N-fo&4fhw}J8LOurzv^_4v2)~al9O&EA&uC6x{&1X?+0Nt+0KUm|W_`Wy0PYG2 zEe>98Fe?ccI&C3J{;H?X;f*Z7BpVLe*&W#+C>6)C-ksrT_(S#Qtw_ZQ-H-9bFQbQl z=#X-J^9vWPSQh&*&$du0TbjWeG z1+arF7y(OiX=^S$z9o{mf}{+6 z%qEMDdUOz=ACosAVBAk6osMzH8T3Kc3NTgU93#)jC#=6>z05b<>;T;R-S39`^T9`_ zaqH+|Vi@8>snU>BuQ$uMIOHieneFE+?_$zt zY&g90i+Mdk(KG})xw*uJJsjc32E10eajsq(wP;aWb(-=k2|p?|?ARE&RD=9P0S1Ue zGJ5zc@}M!iI~$OYw$c~g9Nxknji#lS>qrDl9BwDf#PUSG#Cq$&p4|g{!rNocy*TUSX`nj2Z1 z!@|Wi%({C2<+fDDQ7Pov&uy?)FbSi`6zS+BuY5-&->{G|G;5QWVAay-u0< z39+^Bjx=}nC5j@Syzdmn{6Xl4O0|E#s$Un)zMX!?hSWm2u9TC8v7uM?7K|5OSxc(M z(oR2$KRPUVN6jMrF2?Fj&V!j!H=O6e_f~Tkz6BZ7(8FFO|9zB{c|wz^)3LQ zceghx#kC;IV;p|#8fL|r_%v@+Izc#_@V6R!KDR#=L!+7`pB|ydZ5uGa?LGW#w$iv0d^C?`uhd|=8%8**vTo!Zv%dLWV$thH_P=+zbf|~ z8X;LAZ2S+xnc}585LA;r3Q{_e597iSmGsFlop3HL%CcY_>qo;*;d9ElZS^Vb)#GAf zR&6|K06M-(7g7p^t2l+dmSIFpCk_3g23dH5d3fhd<3~-`8qnW1$Yr9*^THycah`|& z41(uc5xZhnV69y%+-B4E*vhR>EPJEblf<_dj9JUZ9iw6rp>WZ@(?`oJJ*p4Te4)ZJ zM`wu4Y^YN${K|@I$9%m6UsuF%eml=G#A7B7uu`!Gr_YzMzr{Z8ECc2Jw_h3}<;@i} zL71~YzlZUwky*a2DCzkmzZ##En-$%AerqvW$rmf_C;CKg!N9KQs>sF;zjibiO-6gs zV-^ZxT!MM1y0QYC|1=SJU6Uipoi*uqiVQ%z_8IEQLidHTs>6rE?NHhR;e*Rd?mC<= z4*#u~#MfFD5eZDgVXPr(CSsrMm@ZSwJ19HfMlRJW&{wK+nhyGUjE48D1M&?wHVPEu^f>6 zHf}ihs6|;u^r(wjzEO)<{H@V_uHf#X&gAWF4Zv~m^$ZK9&bcGV={}6@>yYbT?pbbH z7EAg+R$SK)d+#9lh+eBJ_;?nLSfyWJJhJp+W-wxVKkDN^bG*g9!2yb`YQ{xyN1h@z z>$)h41rmQP^4n7&hC@dl0N23XL=S($8lVBbPI@f182W5u;KhsPl!5FEnEL%R_8{lW zR(Q-3?cgsC%3HmNu62L}3v7p=tAt16>*=@8w~d9Sm5WRh)l1pb;|8~gqn*d-qfN(s zqrSZPc*A*Bumx*}Q>WB}APqS>I>n;Iy(@`7Px-$nPrfE$1+)Tza#ks(!KLjY;QVC! z={RN)yse68fzo22LoieNmcyavFki?Tccp3ogHB1 zit4=`BH7yH4kwjaUNtM+2lsa$c8aSg!yYuVm9-uly8)c#vC z6axSGzfg{GASC#iYA+h2Y!*EG<*(KiU|YucrfnBNIRA08wk{G>A40=_F&*bNFr(~R z3gudZgxP;reIfzeQpwRkAI_J5myb0lquk(LR6ugkF;S;@*%>>YE8870c$2O+aU8le z2w6RX2vn-Z8ii)#L|YNsePDJQtlvpO4jp6FR+)z4GY~?vOGVyIm|dE>VBLN4;kw?A z(U?@Wh{--TkvnIm#WTx!5pMI2aQ>0szPq6K%|p;_@E-|uAHg$sJO3~ONF!H#U#fIj zVEyZrXN}IqZpgpsoVO3e30E?hA>*NSmgGF>1|*`)^=uqkXBU4XD7V1KlJOsYYCcd% z6|ECnia8A-prW1pfIXB;?wW`iHJGN*8yxGKAMNv1DLgaQfWNn5s-mkE?Yl4L zUe%n;#<+q(c$}0{;fi@WcnP>CL!!4x3&%Y#F(Ul*OLV#S)~D_L5%1vzY)IEfIox)i z8XNwgec9WnEy4xQa~tqKKgRS!YII>|k525bB1CgXjp=vwTQcW*dLZ);?}Wlv=-Nw0 zITxdzc)E~CHQ;dalk{y5cW61nQzMqFop0oNQ>mC2_e~J)Hz`L8=8M}6oda9N%cocl zqSJ0W9sQg>9IqnL{JgvP>*QL`TM6v(4uyLLix`!gOLC#BQR$Sej#sfamxvVsBM?$f z3LYvS8ciduyARjr{~T-^6;r!S#Y_3ME94fGF#clW-DH4$u@?J_J$v+%5#EORz^_~O zTSe=l$54wQZi^ni_s#7=!8xLhe9B*nC1w3mwhr6B|KL~ zw9h@T-xgra2L6&*A-d6j8$X)5S4`V2JXnwqEHZ1LNsRX$zx^^Dnp)0dTE9g(o*xz0 zyiEy?Bwv>$v^baUX@movSj=g4pUG$cXKD`UY|~*X&Emm^*xLqUYSb6zTiw<+LILzp zl*SRZ?^kvb!&K}Ery$bPvL|@UKMFk-f~SIsrzmX_CX;-40fP6Ke)hIlka2{NaEN*^%+|g|bw%%WKh;yd-)r zKV;AO#tW@LZ0`}sbs-59fLwQT zi8Tu9Bw#W=JQ$yNh<-sugwsf}W<}7cDKnjTt+5@0ZIeJN39I6DJF~ymB6YK%&CQ=e z3AB3&YR1$P_WAtDw<1})qYMC994w6UTfak_&w=+_Q99PD`&BJ=yQ*}YOj4Qgwm`cD zU&3QH5V%2g9b}WHZHdfH?y4z6*EEti$fS`^q;J%)Mcs=9?geBj{LgMXfJ;RG`wXfl z@gD-hUos)9qD+PD(rB#6+%3H-`b%G3pt$E#r!CoohtJY+H`QW44D&uNGI#0bb9MrR%jC}}?8C=9s zoL+nv1%Nf@u-DdziP{#eL8-9C=!&xLgpr6Rxw^O~W)`S|07r3fD>04MycYqVnn%n+rt@Ot~7CoRxQ+kv}?H_)oyrX*k{EF+i#w&%}0TD>v zv-xeqak0`c$*FZT*GzdxLSd7Bi>_ayd$14@iQ~osmPCP)9!?>+WXS{cWe0}E-k4t^ zi9aIY9cSlqi_(u(tJ}6Jw(GZg?r7E;(pS^ z^(&j}(?$K|V1=E&&#``JJ+)27Pq}Q$j(_(Vf;uHDc2(!O$y}2n`-fQHxy%1kmG$x& zNwEd8M9$$jT*I+rGy?4ZX!^>qsJi!SN)Rat>5vBL?h=WiL+S4B?oe{*?go*P?vU>8 zZWy|U<~`5%JwkR@62AWt`);yrHg`{W1Ba9OoiiE;RR$p`gxn_G&2)In#A{>eRKCNIPzP{bY`?q z%hU4Vh^&f<=LSpKeaFa9BO~;_JqTu)D_6_d+>pdZKWNeg7Sl~N(1M_;H_r$4B-I>N z56??xcYcTeVp3MK83V(9LgBs-<>fGfTsJt+IJ+3i%M-;u%s zDGtUYhI*4d)YZIg*Vm{-&g`A!zUGj#xfN!iBs2_Ih*bQ%J=nXOI0 z83JJXtFpFT4ih-64lzBChUh@%*~a)GTrF6_HYZ(uisHymuCp;p!xCsj?s22jy}5!2iMz zwqx-{kS;V1@9p>(`$A#9S+;+c)ON%TR*2Rr?LpTe2(BdIynz>e)}MHLJH72BV^L6Y zF{ULWo&oKg%Ae4@h)Vh66rBE+(Y%+F26K?`avv!9=)|94NIJq1rYFJeR)cs4nlIXM z;v9@Mk}YRuZ*t&L3;Tiirp?$svf~%IjCZcW=2<938nd4DC4;x%?T4|6l>vf#9(4qZ zNy5h|{;V^4_uI5dr?EwTGBRCelO0lVWzvuI(367&SvvfJigCGuDdFc3k*uZ^mYgTx zS=ZS$)T|$@_MSPq+W0;bx^A?JsHZ?b_s$Pqp?#_mJ zwl|vaMmB1sf|#|pm9~?!Skq%wDiBumRVC^AXjsJC_-NT3(Xv=;H&5@dEjPH#EL~F& zm0VZwD#!QwtB_yU%V_e>8poYH4fX^^2HTLw8!M>62EdxmU(&nx5S7 z4>5%tBCw6Cr)0ufz6(Kg^F^JMS661rc_U{aA@~>Ue{#*PtxeBjrOfcfHLk^qM)Vis zWY=m6MIbhhz&#Q-zpbD-RtW=yvhx6z6@=ONInI&adHPE{Bt=r%xl9w<1*Ctep(eK_ z(p%e&tLNQc5Cz57_n<>)L7gD%Grfe9J?=x(MNLYTMQ%D>1!oNs#!`7oETRrsNdgW? z0P9T?P*O{H*v(;e)Cw6`KD*;O%soGU~OW}M@Bt8D~b%Z*O_TA_8=+ULAuNh6PKQCiiFOv}@ z-aK-T{j5D4uO-&O&m zS-mfO+k8?FjcL2P)$d~gsO;s`1cz1=bI2>+$UEIZZh9qOc-vPkdfhx^`H1S?tA5xnuv|6Pz zL1=K%j(-&Yw1d9^v%vRQ=qSm)-1!t?a&nx}l-;gPJ-zVkPki5j1l2QMz+XmJm+3>e zT5<*2B^>QlCj}WkLe`}ob5TM9oVYJcG9&0HX^uRFe1|GjOTF67$VLbfB67Qhjqehb zQ5`B;Ch9O#AOu;$}3uBxoIu~2LgZ;q|sRwXachM1Om ze=LADI2zOvy;=HJzR~JAt)CTEBl#M2+F0|3X|gy%uH~^6Q&^*M@3yG%s(yuqPZJ*% z8v5YL7c2}$pfH$j*#)4fu+dZX?=z=IM@(Cl6aWW`c4yMMTXh)FJxr_?ERpH6ox1z_fpt#J7TC=;H^=@HnQb+^wNF^dnkn?PN&|o1e#$0VR;Ol ze(HrZP+s8iI&46C$NW0T$CUSaX`=4p6!GNIXiC4~$wRABCWqH=Lwh~)g8MmE@0mwT z2NOF^TQA~ha$*)NEYw}5o>jhek1Pyj+!7Uj&9C#p#45l%1Z%Rm5)$fi&cyC#Hq%i2 zV4%c`zO7hk2)2R!JKI*LYv+T*ntA=>Av7)8eaD|AV>@H@K1{1r@syYXQrF4zL@-rh{dl8>Gcqx>d%YCcb=C$ges?_k$DR2xNLRHYKazImcP3i z46p#oNE72#3KgRa8tqw3PtA9fa5hTd;l<($1hNqGmUT%6aw!j})zGb?>Fo9U7lfW5 zILwKj7E0efjrZ=-+=d}TQjTvPcSNuaqRJ-&vdc46qSxd0U1tYNa8i;;HYq!YWyjOd zb?&m8a*`Ncj-84&5-CXUHalmfNat*xrMM-wItE%UbFBT>KPQExWX>$}T2w$iODf_% zX?^=sS6?He%~WMQe;ZMBF5#R8vNFSccPf$C?%3SY(w!c zqVsQhl(pc!e#45>_8F{+i7N4eL+k{rQ8Jxc&?2oZam_5mD?>7gaUOSwtp0;$Zu3RD z?X1xE?xrGo27B5BG~=s#$LG!eT4so&+~Th)HxYer@vHO(y{`onSe2Er4_Z7~--o|4 zQAzSr^{;i+;gh&b>8uRe#rM*yw`f-0jKLfiZO`9qOb+58`&BZ(r7;Z}T>oN9+Dwnd zXSl|X2nqJ}5dyZY3;U_Ay^|IpeUG#!!-DXNQ;`*B;fF2Sb=KCe?Y>jX(r8O}Rn^klNncwvKs z*RFPL%XH%H82sIB=><7FkE^!Id}F6OGUY@nk`5(w*MYer7Jnk7SA!t#f)s7w3sQ7~ z7lYFJAJPq_Z%Z3qDNDl}dYvF4D>Dv@j0LRu(mm(lq}Lgn2!GeKF_mW?+Yxr>v@Tqn&@0>tb_G!h%&|HO?Fzvx&y4G{ohtBM`x0Pf6 z82A&sqchr*u`Sl;30g%zQSVMgB7qSV3^+x{A z@9?#uyPOnTjj&%##JIYAJTnf}iskq=_M)y_kCY+3UeZ1(}VH#dl9;c-as88CniRC2WtPtiYZiczag_A<@xT z>EI3Jl z9cm~nndf|JH|niytqiUuH}RC@Ueo1PS71)Qa}9k*y$mi?+vkhPs|d_`ta`m*Nc2O9 z$k^G7wA`H_MK(+DREACchha#$FhgBSmY<|r%f?Jfz9dJ=_I^UM!^Unw$S2s?m#os$=}ndc5?Igw4Z^Hzeo!@;4TrWd8n#oa)R#cGWN% zQsuxOlj?o*kHQ}g3x6pPmYVJ0={fn;e9fLA_RyfUw@9jy)@CTH`^z{*+{7?5n0n*v zn&5SExFuI@_~tn=e7elZwX-B=Yk!c{<-=m?AVXL+Y(Wq`mj*?^?320O( z3xgjjGVaJ)F7yt_4}MBo4HhI)T@nCcJ!ba^EdMd~XB35{oadiugQaZWoikT`9^q9c z=6y9GBf{EQtm8I@0*?=Jgin5~WjQl45u^@UyN`#`gkq@jTX#i)8x)!9W z@e})>E~)i)M&DbmA=rXX@|8q`uLQP-b1O6gmD*Ds#F~p8kYK&-;_{XZEEw`9z2H9s>Qx=VZ3hq z?ES6Dz`#YDog|9ED4ddq!)EsEl;&+)#pcgnF**J4i>tDeXj9nYR`sR;{b(h#X>p8J zs4ZBH$bW89G9%S_eprS{q6WYTSLjEw(|ixgM~iN6%&)G$bs+G}sLIP7ITU=FJz^a7 zCYnCLPG8vaqt@a^vp_%VRot>c8yF+u6#PCW$>3U+u8=MrcQ2%bV3S>3JTW{QjWXea zG;TgUao2gOcH29^G0SDffMj7Tg1%~^dU6-H@SQp``Dw7|>wXL?TZ!wmiyucl8Ml%+ zY!BZcE)nUAfQUqM!0DmpbQQcPw}e08070SjWS3nH{SqeD&Ys*raSRLToR}|r4EemQ zr&J97&yeI=1vN|NHfQybV}Oy!t4Lm`r>iIq5tn7~!PZ!O8`ze{47B~ zu-QG5b+qJ{;j{8*sfi{R+&B}ViX>0w=`x*qUgLrG#iYZ`$jvtPi@f;C4oxJXun|U% za{!Z&wDe}UrPX6$*v}ClnP2uB)c5}7|2IGg7ljtR8&hGqf5v&G2JtZARw>|(8DoD_ zF9*Inno4Q&MWzycWF2o7D8qd!XeMETRh#}$y-OPtI4W|5yUVLoLwll3*DmP}<^)=plMkh9&y;&%Y!0`=i* z)7O1#UCtw5EmZZ4^YZW3W6fsUXVC?b$hHRCw$}QJ(5DgkB9Fn>#E_Yf6$?5qr_t z9OkO|>b$9iexjG*H&2tMW|bV$FV>)8=}9Pj)v3e4Kr2ZlC?F26Q(j4wJu$h{kbwBv zZqI*!@6sf3C|deHrYphjIj3ZRjpV(x36I;KQuqUUW54Uv-(O_el0SD+J@cZQO-r!6kJx);s(fT_A3v`LF0pgKyC@ z%T95iDjfrQ9lJ0a@wqD>rgnue*3l!7ppOq3@N|GoKe z_lX?8Jn?(Z?Bjg7RrT;jr{-DI;pke!L^h{-5N`8@(gY}H%8?h0U#UuG(rM!O#6vtV zUf+Ikwlt?{r7wlTFTid#b{TE<#^Rrwe<3RH^^Cvol#8#I0BaH}^&1*-J|u>WBxT2u z<~9Bp41(CsDvwF>TXf0ZMQ;(;Rt9XDrbV-;d&TAC=M+hMt>W63p|F_Boi_HvASAL~ z+1;wlD0MUz1Z)koTr7%p)Ck|cqNaZEL2L?j91R^isgETcS6;&DJp1<+jdEUwiQKu= zSyWdMdr)V^&HSEj$K^>Nf$YzH zG5ETS87Ch8ONoeW5>hRhZ2hC=-U^91#Bo%D4<~0uVn&@1UHjt+7Fq=jRX=mtI)k{; zE_|UXw63bS6w(LN2PVoa%)mbd?|Ou=rESSA@unvz{)PAcuUDiUdDTXm0q9J`1lsef zu_l$7BEI)t`zs zvnX$i+FTp9r;4Z#1ngv%OSUoVRXRC8JS+m+8-7*;8n<=UfFxyc_J1)6RI9wncPfIe zR*|!%2S^E6lshKOiASn_TdD|76BRC+t&ZY8lKx2a@euZ-Qh$d0N!mxOoesf}QFtfy zVH6?nBp}HQ6^gjgl?S*bohX)Yd{Y%6C**REbh)TxqTl{_#hx|jmis*na&q<5DPJ@D z2oRPoImUSP=}?G`1wKXU|JhibYqTe4YtgxXEG;UTYAe9+H<5H$?JMAgoa!Lr0g-T% za>O%X!mo%l?x?KgeRe!DcWMTXw(K%=k+wGZH7~(YL7X}%_EN&Od^JBrq!qNN&9;1Y z6GwKI&o^OtBuqEnAaNS z?E6GIA-Vv`&EHM@=Z%TCiw)g3l2`?#@aYB)IAgVkfD~oWesTVORZ00n-hC7BB(!R#9pGWXXUVS1G75orSae9znzMU zP3hO7dsF1(9S4xX;^~x-;=fP3e&pnONdU+N+#)XS%o}Gz%#N)2e|eGOMqp<3M`CYw zLH#kG51%EU*3fmZ1!TO4IX2}1eEhLijh(WytjFJ!pdl))>=V4YXS z_oc&|$JqEJF-{kkmGNlPr-QdFMhet=229N3gYN?apnxf+!!A zB)4pCyS>Gx+}HB5*;*mQW+juZGt~ss_m7;3esTLH4i3`ba`s~3q|fuZy&4RPt5V3= zq`!fW0v+vz{d_9&r3%+|ZTFgFG^#5BtClS8w*1Gke$f0|1+4~Jk`4>GZ~M=><5~EU zVpTN3`$1|@CPlwRfKIX9idtIsUyPO2pQb}{n<&`V!w6H&r?b90|MZbQ;`rtX-N2d> z7l+KO0GTHxQ7D5Fp2w6tz-6EcMxU-3K%z5sa?d<0+mksbI1l^zwnbz8J&2B+txkh5 z%{66W*mT@PY^t+OXH8GH>#v};BQv9{BwWG5&=)2UbjOlYXQJ5>)Iu;e1T9v6PZ}Wd zKydSdGD~g7-M1h?wR%p#sQw6aH!MG3XH5baSW_LOSP4G~BG>!DdX*019tIOX411t> zmz2k(JPgX3s+#oJERCd?sDe{6o3fm)Y+NA#b)sQ`lgv1!=lM9~jQNb=eT zNKHVQX~#qcP7)p`)MWef6?fHe!nC2C3YvA&TidOex5sKlOBJFx_n``Q zoYBNYon&PwFBJ#0dhee?5f>(X?{~a>o1xC4%#%jKnb{GEA%I>ToF{kWJ!ojQCYxib zdQ#WCiT*c@qF<>uHLFY5TE}ccX`y98eJ`8fNUJeM&>c@+*D^bmsWM2Qyw|!weYV4m(rRjU#t>p#_5w^zr|DK0epoB zC6?WV>WwE4iLM`FJx}ez>}1FCL~(!MGQIIpDcbiO;J-k+^7^Lp*|XXY-T*9<#2_R> z)lX+I`7zpyHwt{S*@#0=i3Jpnb@s`7_}L3bG49a7yi|rpspCc5h^g?HXK}|CtR}i|k)$(ymQR&mCD#@egeUQur%QtCxsn-tyZCr1 zwl2#|)AoB`8n7`O^H27TMORMy8z%#6X_Hu}`YAC>2^+<}@D!2U?avhVQ7(Wu$k~SB zhwqa^tY?W$g9r89OakxPkcUF9L9aMdMC2lbXhc~@3q9Q={n5G<%{qU z6vs;gy&Usbp>A8<_nMxZr-5V}Whr7fu~PMu(w>Pix2?&a)Jq3oEL&rt6F54d0V$#2=-*&Y&Ukk8r2E2xOZxdruI>Tp9GnLOiEK>c*;aj zkF@(6Fo_#k#h|qY>uTLiSBxK+FI62(rNJxgBxG2|^U?}}R=fk_jC&TfU{(C_YH=xt zRfwtFT=dV)2je!Z0A!Hm@p97_6uf<=` zBe;-rlH3WjPwf6h*ia_6WjB|pwjQjKrDTZ5CJ)*y&dHW4&^rp3yjOW0$@;aiv33-@ zkjU9aWATykvYlxi<_9SG0{_VsrdESD?>))c*o$@EzOKD=2_2bwcW4pdyub$puoo9T z$X~A`v4Z3oj8Gk0=+qx4^-kS^$^&rF#1WUO(v+TdaedyV2ntITmIZHsR2XAoSFSZz7?HEO{m8W+nL zXm0hsBj2dnth3rKIWk1o0}IfJlQ%WI_=E=M^@W*u{MXACPv|OgGN>l5;%CI20dBNf zCfNs_Dk%S)(QNcz+7aS4Dax;z6}aKl7qqxw(FrXLYFULZ>RuDCttz-e)2*W%PRCX( zOB}e^B0bE)SNS-0iZ3{=< z;?iJ&r|%s8ysD%&`N_IIU5KTVLHV5<3h)ynLdzNoQnmB9a%S}#4LS0A%z}I{b~U6m z%9icrS8%SDy^=N55SmadZTaUqFE_OYWgZI@|I;+*ktDzG&C}lf9V)ml+!Q~wkkEe7 zV->VoJT{N%0+Q;vlvA5?+_Rxxv7g$|Hi!3{ex-{uYRL{|j9vZ$f<)Ew#C~H?exu9O zl@6P61Z;6BK~noj^Mx(Ij|f`4krli|Dx_QPZC(YiqpKE^c2i|G<%}2KQ!re7)kwC| za{>UzXnkib08a;IoMzOW_o8ccJxCdhY{uq}^k&4pS`SNp7eg=IOFdOvAl=l1{wq3Dgn_$4>FaepVq^~Z{Kqi{ff7)x+3qIJ#M zzptWfb~TTw1<7DRkrEw+x|E_H*@5{FVlJL~lbCXn&X#%iM0JT&P)C*EqFQ<5*v_K{ z!`x;Lyw)XAEhyjLQh+_PX+MSS6SgzxTldR7iH$a0jHQ(0of^>(T%7iyU+yRYF{?v- zi8h)nzcNPFIuSf=$y22?k~4xQ8BvfKtM|_8OFZ2egbt zdF8m2OtCc=hwzpu0N{*>p5m}yf$*}m1$R?PpMUmR%sH5>N^6~3q3a~FKQvEe&K3k* z<&^6{+$X;C%)+6ZoWl*{lPO680>LL?C(uWdBk~g4;+DLFr9$j_TudPycaKC z)%<4EetBHu2VsR(czzK8JUDE#jik1?;j0Q0c2lWP`6KOTsQ(u5O&iw9JG%+#<#nW@ zg^3;e?94l`{qM~UzO^4t=&0jI4R43u*EQf5DHbIV;38s-hh3&6Ww`07o#+vy_4kX* z3B9(V+W|n+6+@#%ZXp=2#$k_#xAAkp$N>?k`oEmt;oXjU1HHtByN{1;xkKjT3@5Rw zOq!3bD8b9sXSiW$m_GRvLoAW0)q8b5hk8?0AE_cnL7P{M@F|tb8v|)@G2>Ns)U-?x z{_V-<42pBc+pm&|fws^;3(TbbyE&%!>vGqKeQcnldxG5(48_bjKUz^?@hWD+)l}{y zhaGd?0rs#dvb#OsK@&im{=J7HrvltseR4L$%wXH=cxTm?HA7wpm412=(ms#~-*g-7 zvfL&M;rKG+hX!qg+1k%9Uq2RASTmX{Ro+y<&wT`fJ2-8zpxD&@Cs*BXq&ER_zD$*W zUsQ?WE=(|9pQ$cuSMP~*J$O*fp1H)P@XW0SqM$aLDtLOUCQ+BFylnvWUAEG|UVL^F z?+amGA24@x_{6^Y32Uc2Z~*?R(KBpQ$%L#-Iko@(3GTbJcd8C zDUE6foWA@6re65=-4#<7{2^o>t0ol~!sVTwG^gH!a~ao#eKGKvV>-Io*U*$zRiGhB zOM`1-@$))NDX_A)dsWNw;>4>-GJR2b5kJ#C9tp~jf#OY)y@Yo>@3`^Sb4;~aUdB!g zS+U(=YdLh^^tdU_;Tb06XE`#RDR%?lJYvG2l6Is&CUH#@dMs zJo>X2S%Ois=fQAWdZgl7>)G6LI;FnL1JD1c>(Q#?G48mX9rxKSCFCv}8yYYR12Zwm zq)oW=QpJsK$$eBAi7Q0sMWZ*-!$>9Rj&%Ep)M-1Mliux|J;|=7A1I?*q67nErP=0t z4NFM($&4TR&-N3fpx5$+*}B1R;w#5lO{zVq>~@SL{%BxSI?DL1$ug})0As4VPRrqX zezSbYh*~~ZHJ?~K+p4_=zGgPgkhg7hCh-5%*>9r_aU?XaeGNo=kvq6A66 zs5%N*BlcjqYlHp${4sK<^%MA(%dT>hKc@quk?2Ot*Q@lq{AU?&ExUQOVH8?HCLU{K zqgy^yGrEnPcg@fN-{m``#OejvhO?5%<8E3yW_MkmFVp70DT_6CHr@lj*CdY^wlvbc*9lm&udO?d%?zl=v>kx{`| znKw0fR+V43(X67!Yg1bLYQsF*XZkCZ3S=U>E z+Q@wlX4S@Yq$L%-fd)%R!yo1|U13I9mUamtyY+I?+Ku|?UYVQOcX1utFsd6P7z1h2lh_egT<(6SXsJqJfglJcT+9)@!zEEe9Ul}&Y}y&N+) z&1*vj4`tiB|u5& zT^d3vz^L|B;J@3^HxpZTzp3D%>R-=2%*brQOJR6Pv|DD9|3%NE@xf#6ZA%A+27q4+ zR{j~Fqep?c+Imq_@Exf%AZ>S$1JBDB1?f9K)^mj5U#m310?&&XF(HY>IEk&yj)4`o z;B;q*hu^&;IC{fGm2>x9v$>hljWyixeGRzui6iMUUSK^iGGmr<|Fh)!x>!%X4&rq_ zLglE7PgO?_J75pu6N7G~m+G!}F>kwYAxZduywA>Z!&mAzhBa;DRuby`-r3Abv1RIZ z6qy4TL2zA5V|Ad3zPMrf1rMv>*2s0Ohh|?J_qpBN5S6Zg=lLc9Ag$OF3!+&}zH>@G zeS8Y7a}YDrX1=aFo+G~IOS_GecrWs(;yU8Z^Jha}=wrEv!im(LObqxSG~AQD?0}%2 z+w`nDGZ5uG|BL3c2z>p@3jc5W<6OU*if?Kzyhfcl?-DV8$38rTvN{@4wz@aYIB1Fz zc)I^K--b1PHp_J)jK0=h^slVwO6@TKE=#q4)^C{9cZ^DNw;LLmk{KG`OZLtQemE7~ z()=&Hy16u>9s(@0GLNp_SicZRHfl)9Z--9dtZ{4DWms7YdZ0Wkt?)T#TD8LQa7hp$ z@lrcLCnT1F4i-OKJbUAqHStD zwdNkK1Ue5~!q>*7W585}s40)3O&odEiK8VFH zO}c6;2<~TQS=xYm15Y^u{@`$i-DYsy^QWs-!|@xq5bHG;^mJPHEbac;lCSKnLA5%N zN;H+rGK%5D+>X-d3PEa~=-TnEo!mot^vsMZRg9YqbK6!`p<_hpI18fwM2iRn63$*J z2f?!4BDf4io7`)_G3V3y({Yz$)lCKc*jq=*MI9+he$A!d?Ruy{mvarL#2QFIzptOv z+F{FdWC59j&M>nGi%7({a&?`@$~$!qIQ^5frtv1KWmzX)S!>{%B_9iwq|axmmbp8O z;CyxWncD^82)-_wHWQY1*)gKYGz5So5Au=WNn))uYaX3xfp~D{f&rXM$E(u3&ACjB zMrXnaaHK%_Pa!FlD`I4focUoCKg^tO<3r>+*HxtU=8j?3jmpzu0emqCOuKEhpkoBe z1}+QV$sS4sL9N4kDH0v#>u3#TD#>Fj&zJKo&P=PKP_j{0QV#gx#ij0!qb*|D%t|eW z^t2QGolamL`{2QxvjyJ%rnQ(7w^CBIR-w19*PCif7`<-!g%%$B83))uDq^+)7@z(5 z8wU+&Y#g`9Q~otwu>S;E1FZ@^{|!jJp}nKKJmD)+`rNvftVa@4xwU;7hMi@5ZFFiN z09okvEczV?(N2c-zWgiCJ%m5wDi>Zqp|Q3hSs4Ywi>iavWA11~4nvcJGgUzSY?19F z`$Pk|oKLSft}dtYFq^sS3?Eyf0t$aT6Ce#*ka?mSe?ZP32WHI`#dnEucuJCf=zUtW z^7h0A&R9*@(Xl)4?gZ6@GL2tLBF(0Qn5Iw=fo&T3t8D32)VY;gbA$WQU`@+gq}q+< zt9{2CpNn$8?&oZz@V-dzlQXcTUMg~_I9tN@SWknh*W42s+V#7}`PHSAZc+kZ9FkGa z;R~Cm5HmT3ld_%Ly&SYTyrH`)UrEIeW-pYt7_Pc7Ke>8qV;XDsJNy~J0u5pO&OUB{ zS%mdLG5O{Ube>J2qrGI!qvkjH>2^~VeO3TP^&NUx#66Q62mEbJbC6Zw=Xw@5&Y=7Zug|NF?t2Q4EIl)X*J&8?KAxgsc0O>a?zko_Kw@V4EjxMi=Pw~3WZ2+qC zAEzR+xEW*v&XQ3JBc9V)V?J*$ZB3<{EwQNs5o#VQ@rP^?y2lkDG~Y>(T@bX$3N0vg zIYe6J?)B(|Ov;_kRS;{iDxOV$Rr>%~N+y8z8!R-IBv4nfOLJ=3tceow3iWau51-*` zOlv=*TEl}o4$h|qHhX>_@v721{Z!$upab6Ibt1UR!-ggT3iScdcr?6fy-xDi2PCPU zEfHsNVE!{&Fbn%M#~t~%T-+#~0>$YC_s$ov(%kY60NOS-?EFy1F<^`KgLwFsJMgM@ zoKp*k$Q<_<@MipzV`MUXUR+1g?21_uoAM@Rq{qUWt3Lg6+6JAAI)a)3fT~(mghNvr zOu!E= zXN(j#!RE$pan`ykBJY%(?;E>EAdHw+0?MFaz=DZ_r8F3pKE$l_0Kj1#=JbtrWyaQ) zN;d@aq^!mlPq?=pmkz~@+@Pr1U+qRNK#6!4@~ps6cgPBpJeU9#)aln3`7r=f8 z7*E}|p8UXWLHYW`N+G8R&(y3}?5<^i?KQ_QujNXhR5G;p5R;vq%^mHvB%R`IvYoTeg;<%luveP`e@}^MNovs z)6oumXqfig&c3YEn>%RAlIANRUsdm@Dh7LF+` zl$XX+OM!O*XVWWtaR*{sedvS&{obKFzlC5)pjDeml`i>&zDDKEjJVMv>w#=gK6K|@ zlk6DB!H_PXVDz+oNb_G{nO!pzxUKqW3SoMKWS%K0cA`Yvw?dkx6#t!>@7+zgm!*uE z@8X{F-*yQ|Bh;T}L7ZYo!}My5Lb;A!Fd!(j94qRD7KFEr5Hf%1PFa{{070 zsnSJ1NFy$0bs39h5=8k6oJoeGi$S;ZJy(G4(L8M!F)^3z`Lb&zer;KLd z+HX?7FEM#BKp#U3JA%w1)q+bmTxQrjvqz`TRIcSPUPTZj{0$nsrhL@wW`LTz#`8@L zZSQc5n`PO(dgTFzl8L(mthfQ5Bh}#Uv;}-D7X?5(%ds1UB+cHCDh43y! zx=ssua@7%w{6Cm9PnQT>ey4^AbA-lMWh|~8QipC450DDCb5lu5MwiNQ>*{7XY`R77 z)&1xKPG@<;lrHJaM(TxCRJsv|Ps%AaOVxA2AHa}~6FeYjE+R9Z0_cM$5?+Ch0mTCt zegPsUgsRxUPewnD3g|XPO{;yGSj>>m9D)m{^N6vO>_gGoB2Wgny2dx ziLW^fg3Xk(<}ao+p7stzmH@^0ChVt36G+I&ig(cTf^)Mbw-8j#gwyS2Ag^@O<6%*L zlYkkV_Sc6ehuEH+I2>EIFz@A-FRlH#^~SKc#jqqNh)r3GV2pmOiy8<3oBB?YMdh)6 zXMRhH$YSVFGZHjs4F1itW2? z?@*B={PO2=h(H_uJaGQ#5q_4%R{$R^Qo48D2{b3I(t-fP*((V{Y4BT^C>*b%u1=Q3 z>)}+UOrqK|&V6t`^s@jkP-jv6Xph9;FQ|KFqS(6blx8#TepK0>&xk+h0t zF<2ZvFu9vbiv}*!W_sZfWs`9;S=`3IhO%N+cL~&khKcN7;(YYufbaHXd1^fG)DyLO zt}7p1CnL}wn8j!KD>qv|H$2Y1RN;h|0&1Q)hiRshtj^z=3fmkW&Pzf7d)w1J4gb&Z!Wmi; zmr2pY28lj!`^whVVp9t~3)MCAh0TsFX2b>@!dLW0oTsy82yBj9?F~sSeGGdK z=WSBV>R!wj-=x9XfS$qZ;6a4^_40=rwKb7Q! zCt!qVGR_mcdw!E58;5V8g3Pz=+PypdiuOTm@LF~xNw~uO?={73WW`$Df11MWM*Zu` zcL!e*?Smw?Tathd*vbI*O4JCyMK9Ni$Jb2GoN6uq)nH#~x+ec%?G z6R5VojXeN*Xwoy@f=13Hvk$GHfc>_3UPXA`x}Mpk0*a8KUlyDElB5OEF^%UJ|wG^ zIPc7F@j3F@4XKhi08aAecl0|6e~wAo4dGlsUcI+RrYjJZiG=^Gka)iR4CkSD#y1kU z(=Tatr0Zedto3e`P?#bY%qNkEHop7(fzB9MA{v7z;a}bOe_zuCa;98m(;_y;279J7 z;e)o{%!h-)-y8i%G%No0$UM$sotaNsW34_Mx$L%1@_nLGa^%5P2tsEq@-1X8ha$J+ z4L!5dZPRZk@c8U_E?EAQ^ZBNgw-e|eMS$xh_i(^wXDtJ6c=6!h1}V-M9#{xTiW3#@vbl-J7jW;+E2Hb$)^G@h35LWAM6VG1zGSe$K%U%rmw-*R~ zD>Uo{3qj?_(7(5<`0)NVQV5c1Xm?B_cp8+lc&QM4P-lg2!w$PK{xU!t`0s(r%ZyDX~Zj3rgaP z78nnNSk4TOyUT8#Oe0B`SjvCTy)UWtM+(e<)w&rBb>3FLt9|LM0+eHiB)^>U9Ryrw zevpw9tWc*+DKo`bPBD_e!+1mR5bsE}TQJZ)?X#JVWA^BSaOg4$&QwpL& z9O;+!Y+LBwe;<=2=q2AR50Um_x`sUGXNE&Ww>v=Jj3^dZ_+Z zD?JZy>*0yXe^y{D2!wS@Fesb|x0l6Zc~dXtexAJ-n|a@U%<-UX^6`DcVVr&4Atqj0 z)P?tvMmYR=l_bR9CgQCB(s<|2*p7qw(+}dc*%59;NMS_5hW@~1f+y_VLAd@z{H4!Q zd&+`v8jYcx)N>FxMS`b_x&H5B-!yY~2=LU#m;OlMM;&->6O{1^7n7l=lYHN^d^D7u~fqM9#NdAD6_y zug_@Ec=DFzm4{CK0RsLZ&}K@}-BXz3h~t-rJ3lu`FAua&E7xBdj4LP4Wq6La55w?&{@tm|5GTh{yc2-gXNUYA|L)=HM0kk|lP4frcAb?kMv$? zB_oob?#J_R^f`DXiotJV@K2NoXUEe6&gCbpV`BDfQpLK%xDDVZzH*6kXe9uH!9qjB zJHB^u$l3g{l>2q;K3W>n-igC>`R~i5*|&UKNt#}^*1V3gEcwXJTz}no%%1~s*qtyf zp0|eKI!-B$x2I9%kG{2}q!VeMOzjPYn?Z&>w~Aff{&vq#)-eR`;lIk;gp4q~oBrno zVDS5a=k>Va@Jj08P5;txNWgLl>y{-!({}k|^C8Iij2WjB$oC~Sug)AAN39IZ2L=M= z=Nd?ae(Vt1hkGDKeb;1viAbLUVRC`QGH35g>hW9Y8LnyJJ_6?Mdf93U`s=xYa7!!U zM$-}t1NIHsVBp1xmL+Mf#^`Iz3o#IKWCX?ziW!)g1*i_qeyyVs`Y5ov5(1CxFY_;F z)s^#P7r@(XPiOJZ!7azasas1OV|QTT9xpL-F#+1LJ43`Vx{c8R?nhKN`M)pfJ|4UUjIPf!SYeh;xgxfA7`R}zvd%cJZbjTRh6VGvaLz3WLD+u3o z*8kXSr`sqS#(v}_0LbG{9{y#RuRp3gfWr0)wQI0r1xZ@*t-Gf<*1tdA@DVifdC4>r zD*xo{%@k658{>a15+&8SULK0Kbh(;Jb@x$e9SDyKPv$&NrE7wf~3RsUr! z&AsG!Ir)EdeFackPxLMnC{{{wclY8@w79z#io08J5}>%dYjG=9q)3BPtXOdhg&@V< zL-OwLKlA3jc{6W@kW6m&%I=Zxob&B&Fest)mpNIoW=@a;{mx^r4x~zU_*V9B2l3uB z+lbEVp8ap+TLpX}fpvJ?AKI!&B}>iWrg=LG@z+bM2};+kkDpq?hhy^-KFNE(RFA+t z+^_hEs)v1b*-lTi8JD2gPHyQL35s^vcl6R%kgP&Xn1dXG@2(F#Pzox*HvNr>#V4+d zgJ+KX^oaQ{ii=36zCsPoHVdbW*87`orp%Jn#X&1P3B_uT=8}?S9j4zxZ4H0?qRBRB zhJoU*Yml9U+Q_#)86Mr42c&zxpJit%1_-aS>gOoEE)*!?t}8INdHHzi=8jgjkAuyX zaewBT?5T5QdKNIUvkIILa6$_V2N(NvJR3`sgdZD()_3YfSN2xHdWdkQH^nH_MeIGS z&VyoU32-{y{)T+*mo#C^#^Wc@_<}mWB8qK zdK1@At3Ly~lCoxLVR~hjcPQ!rd~t9>4!ycoCB_^Am&YK4&n;@q^dB5%8QlL& zVJ8EK2k^QdCry-7Eh2hxGiN;%0Lc{p#3TRYie%QIBqcF2@`96p)wfk(9l% z8oc2rI+5)lC2{5o-1)ce?oKD!&=Jg{4*STqEnKC%4%zUpwgRs485lrF&aZnU$y%_P zK?@*CebKYT-H*^821wXrwbg*!>XvGLVu4*n{ zfFz`+w98)gXbm>Ah@2O#ziZz2`(^SWiFXL2moZi%mmVG)xN!*)rXW#sR&%~?v;WQp zQKkK5`V+J9_IzZJxh9^5|CC%*6Jnz%IC126HIPQy>l|t?OnOvYpn*scMX-%{=qliF zXw7D&UN|`yRI9h2CyH9A1?JT+p#;ywGjGncq6oh?6Qx%G>)RH_M=psKsh5#7VCEi=4>vDVDd|toUV=5I* z{$NJU705U)dA6Y%+HPRIZN(oD(nIvm#a@@h#;bl$vRehBdAhUW45-a4Ru#ck@bfz| z8@dj1^MdORL8)!1R*5lg&|1PzrFiNZXTbsVUG)-Tv2rwVEZCz@egi(oB4K04WzpB}xOcO2w96oS}?Y9Zk9(1*}m=71Fp2|qT6HAOOyZ)8vG zvKirk{YV0kh~m!(4!zd(uK7+C07&qMnpwyfY=OJyJIAF0G|{(TJg?0~9o_kn8A6WO zpCwmDeW?Z9a%Nwal5)>M{0@3YK0)2;fqnr3k9!2r1Fd~03!LUBLy*n|35^kJb0`=;h94bARPq?Je-DsHUm^~~o)nU7Fn@jmT>Zv_^0R7< zN|uA?7jtc`M#x&H0?-XwM~ng3ah5v-m4I_)i@ z2(g%ejy#Xr#54DJeuWPQsilcg7=JRT!viS-GUW=$)J~nl;vma_|EG>*Aa*FGS`KpT z`~X3O1O+_T0{mLT_s`E7MPj;x@O&geV1a*O0IM`={!x8tczCBol#i7#?JbtSftv%U z#m>xNaQ*BO7A_GDip&e9$4*ZK!|>>Zbf$E{?DQ{dt~r{95=TR^e94ca<3+E{#7n1^ zvmx$Xz~y&AP8(WU8sz0yZ9-7w6V=B*OJ{ozxX7c~^pomQ-q+ZYrlaG#fL`>#(;u_l z8top=6#hM5gp5E4Zw}u952=hvgs}5h@O;c+Y^qre9HxEP&qHo6@+|rgz zwE)0Uf;IsTxc(Ug)r;CRSZ29Qg6oE6_=cYC274>_10Ar*}CeCnCWSYJp*! znpMeJYBGl`$iQX}K>Wb{GH?|uE^)H2{jQxXbyMJI%NCHQfgV}l?m@$fneH)Pr_pLY zrqP3zTt_Olv7UcH{{yNAw62{b_n>^dl?&eIfhDd<@Gs2dslfYnA%@HJ&;OoUu|?_l zl=ey3jbIj1Vl>*#je&jlPP007Q-RBtg9|BE$5_A~mGttm`zkxPkw(`M(Jg+CA{z9% zb|D10GFZP17{nVkvjDAh<)dCLWZO0ef*ASNJ&=&0&QBvkdmgEvXS7}y#ED$E`)&U* z&CdvDGk&=xLz=fgZs+YJdM;@ph-~0_mZU1pJ9nfKo;H5|5I*=&ps<-F#E>Rph}fQ! zFSsW^S7PBQ+%MfujNL{$Vt-q&|=?YkKCk@A9E zG(xScTd8l`$WqgK+;LxW1r7d9^f6wsTtl7KZj_qad*rU~btD}UuzAuNwvkjW9%2oV>6 z@FwyTuy3J{X`t*$xiD7q?mwNu13Ty5v33%$69t1m*afRj5nxG0p~?Fvsp!FrC!SY> ze{~=AlcikNgEd;I;V$`j0UniwfIEW%Ze){t5dztwhOP>7<)ZrGG~^xjCIh5#t-Q3xo02}!H^4mFrW`@T=~)vW8C6-J2ldF0VXeD=@rj%v4An{3C|y7 zT}9Iv*+(7VGhgWC5n!MZ=e;9s#ZI#f9O()0U08 zYGA(}uWrwkSs-6U^QrM7Q@Ku6J+gi^1TU9o5Rvn*Q}sIk*XbUS2}9j_Up5dc4n-#{ z8s`UvUfnc`!x^BD&oZZg<&OlclmlAv!8Z2e(pigABdqk|4?hwRqGN5^nc}mFe>KK6 z_iobEi@$zgAzI@h_MB4;Wn#DyN;l&RXUk` zN$dbjCkM-4_@zeCQ<3~CCagZZlK;O}MbpoCfE%;Inf?9`8G1y(bT5J3*)kQ=(`}3! ze-PM4biM1qPaoR^PwW*k-K8FnkfVR|!+?R(d6wZ&Z{X8uPW<(m=z7F2G`Q^h-mit~ z9h2Mhce;SswWcq7V4XYF;U$5TA|)kfdjS!m}+UzR4IlV4=c)ly9qNe(uHY%{`=S;(GG ztVcfTF4a%V0`U_u%OerXk4BAK!Y8c~Cfx)m%b%X@y6u0(e$Bh>gk^@XXwS`z%oq0I zb`rrPWR1U-&(teF19qYt@ZP7YHzqXv%ACEUoxXD{d%#W2yDIFIu53@=K0K2f)cgGX z{=(=tAjgJIYe2GXdCbl*ZF%~&LPq|;k1u!KfLOA4MnSkzY5ef~e=J~h6gHaQ?O^mS z0XL2Ewe<5}sRkf4T&a%+uh_{+zEuqYksHnYtc{Oawtn4o6_Qxr(qhScl{1=844mn8 zY>!XMpB*m|O?2Qso^7bVsC9y2ouHbVYES!S({IIq^+OocPq~yC<8Bg`-R%J=nk?XD zhz272wQy<2rmd-jtNZDSOguH)L_kNYRt>>n7NeRN+*< zI-~r@e{om(PYnuZ3O1$R{i}bE0}c48s9fsD$E68aBYpabb%b7T;a22DqkY>lEEw1xJFa zjsSD{e5uv;50Cdx)eKjloS?EOVB92Gr;88%Iz5NoVGk`DF!V@tD7!5V{xaJ$ShGNIU_uJ>+71(e& zafu|$%)LJ+kI!}|WH|;wX@D)<21x+p8??8Y6fg-@>SMX#Fb^K;w5_d;0|r@qk2D&3 z2R20#%g8y1Y5~-F!%ogkicsj8p;SKkH;O9oaPPmLQ=>xW^4L}+lLIELsTIYU$5n;? z=i~pJffx7)or)i%51q262EIv+sXbTLK*hqBudMj89LY`@7Z=_%ho7dSLcoSfjKz$P z-Sm_3emb@bixwH}zg1_M;$}Ea*~{c5p^$(&u-lTT9>M z)*j)vz)Id{75k9qHnp&D4^9II?Flb)M~mH~rD;b%j1E7-%)^-cs!MVbSbqkp1zzbB}^XZjGF_{r5`>SGm z*`%Ois%Xn+lJk9N(?`Vr-7k)YK{;4Jz&0m~mRSF#P#tS19ITO-;i5dzwTVzr0Fc^;)! zvL!0gM)*^Dqc-EmLIhbug!9}Yuk^Rly{t%f0O+4~tP&Ni?moDy^FP& z0CBTf02NO~Va$C|r0g5j8FHtwn|8?P{S(@jLXfrYWXji|Vhwf|q1;C(?E$B##EJb9 zTFW(O`eAjh{EttLZJaKDBs*6`0)uVAH$G+^1HH;AJV$zEhNg(0des?xtq%$%j-XO@ z$x=)bp)ENAjR>t2MB!KPF3ZU%*v1hu z8{@vF({3uoDsI9Qel0#%ib|A!I9&NI!b&vt2e;_&?#Vr><_Vhz^GRysig!AN2Wb-0 zwF4|Q$7|QMD`4^$6wJQI%aP_Ho~kU=1uD{>lgxFtHFq%M*A=n@i^8<_^hi6jEeLGJ7eu82NGw>?5&X0f z)93-Py|M{yvu1|PD|^RESsArxNcECx(LN4)+}``K%Q|Dw@O}g*_;GgEp>er+>h zT9=64|D@w}k(t@_*aT3M94wwk?4Ilj!0|{)q%I}ENJ6b)Q!W;0&Xru@0!Nm{%jTz_ z#PUgPk%Z|O7Y}fHcCP_+6PX>y#c&P!4#Wap%utR@0OzWbydNPgPt`BwxE8C3dPe-Q zF+D%}yvr5EaTB!2=HTbHuN=hS4$S2_1A^CIja$ovlzCU?G4a<&KvnVH8-V^k+k*o` zN%^wFQVS30-0fRE``XZ77m`w6%>$3iMhbbRT_UdT6~njR)cRPpn$F=ReE9*#dqSTS zo^)MUo9eeI!>Hk%JD}sJc$dlBs+sg5oRn9nSqAK2y3BxmNzut>h}|)qW&E8Q~N-#(IVyzlje=17~Tv;;eN7ZVE_`k zyZjv0l27R3qQre!)F{zj(xeAALTWt^3vV=V>HjHQphcW#mWfQf38Q^MV`a;-_{aW> zMC*%_W12S<*t9J$Cf87wWf%uEAB;16@E)g2I|RA(aa_C5wmOVfB}?klU9L#6aoE!_ zO_LvIC?5)3=7J&nOhsPyQ{YUvo6C>Tnc&^!0$YbLT6W2d%tFRfNrE$ej`QMYl=fsa ztyUNl=9}~wsSjD^-hoYMf0jd#x6U)I{jw~vQDfc%&O8`j~7}EuW z%XbOLYh_Pnbi`2U_Z2&ff|SvD@V^vs!EVKIcN6$hRMIU37zTLzxZmAVe4+%;>`T#@ z&p>YTvd1eVdQw%=ozOkDS)_5^R$YOoonc`>9Ylo%nb_+^CZ#+Ob0cj6k`HSY3fHyz-VDs*Ll(Ed*ou?In40nGH(tLZ$|;H1 zkcPQjYe~Av@!dX!ojdBs8RBedzlclMCR0B;j7X^IDn>+5InIsO# z?PWExP+wT&$4*ZUGx0o<;t$NQ!xwnJ*)v1Q2kP#LNO(oP-ooUEqC?pEeB z0o@|X+`Fp@O=3CNcHp#e#LOU(K`U&EN`^_L_RdA-AiXAJ?Q>5K6=Xc;n+hc&?4jMu zS^A5U@398SZ3%jGqngO`Lg#p`=S%jcZrSCSv}1{Uw1afx%Xah!U0-;c&OZ3-(k9+p z`1c}&=tl&a(9W?)`4Ym#UwwDAQSuO8kAyFob86=@Xc}jZ6s-yq)sZON(}Arm7ZxHI z&U*lu99`2>>?NYNt*dcQM*gn!pJ&+dA|H#~R2G#Y5~7RjyfL4ozjCC!gLW#=pQ(v$ zh@M}igQ+=B-$iaEKHKZjp{ihb+2aLS7z53)c$kX32JC0s*fbX!^b0{^z04p`z2@9z z#2?aX=2t=|uIx3&jRsQXlT@b|po+F|!l;kG)^>6XPYNK5ocF+_>LH z8RV7$G`T zR41OXcH2UPLn6_W6piH~5_b#k+(WSblD2A&ZuoWuzONAlAx~KOQE**J!LD)$b?8xb zwC7}~>WJWIR0f<6Dyv$XZrxf9O70nAlWu|~)p3eR7~Omk?9p%JQoVlb*pf?ovgdtZ zUUzESZe55AZI?#!j+abxE?kfgFdT z#OiidDEdbjUa%oo$VB{RuUI$WV*iFlUmg`f6FcVlL2yDZgc+6|hikEPEFwsvQALtm zC*%JtcwbAr-B>+LQ9qCvIqVoAB2S4ZW!XV2HGRIXWMBW~o5n!fBI?gP9FcGSCXcH0 zyHcZ> z^bTz9W{(&&|J>?C_bcuLWk36|F-W*7W))Y0PFVPuwzmeWyS31VZ69cY?vh8)YciUFVcE-woll+Bdht7g~B&wSub*MMZ<|4=G_iY3cZ-VflVJg z@?5+WQ2XCpfF?To(NYN9p5KM{!Mc(IG-bEEy@e0iGY!22zv!}utm%vj=0l68e(Vi5 z228$Gxd|Po5?iBR*4x%RZI%9u=0ao-EafpRl|1%#fxmMLD=%t<^h-F?_?wRrMoQs$ z0tEt1anxokW30nNaWeg7IfgSfKi!LI%(AD`3EubUA>qdhFteFPRNL;F5xEA9MWFXf zjUypDEf1S(H@D`K2#DP8oP9nvd%c}1^7$-rHX4OSpHe+dTP^LnB@vBtSXPvlv@|-h zz(4f);WjG{$m(`r-y9(dEQa263StSo*)?*grLQSsh1SyC1LB7ui%` z#GNd@C6+NFJB@uCcE3x@0Qw%G7#N{=uV0Mcq95ngpkQoKN2K3QZX5Q2ZahMES*}5+ zL5O`cvDX2<dZ_T%!SfLp%VS2vM48Q7w(95)V5<0 zOE9R6($$~LTTw9XM8BRBQjh?Sn}XDeY6+6$EyXvq=q$^8T6U&rGF-C8U9f8XuJw&+ zc_NA62XMKKsBGoa>Jhu3OaWpwK{(qGuDW-LBlocxPtv%`)~kiBTGzghACo!s;s=2U zD(f$|m_~*KMElgmKew4`LBypojdK^KNeg$_8KOb=or;`48rC;vTQ7YV+=k;{cXScy z2;>%^YC zT_nHMcmCu^D{57p>16`|GT=R;6!44p@sdx85L8Q7p;7Z?!?73ZQvTHk;;*UpR#BX& zuSE26w2*)#W0Haanl7Vw(DJ~WLdICSX02wtk}T4YjM+ZwcBCh4%I_W>q`gqEJ$|_1 zzlZc>7+hzFtfE*z`Pjc2D)Mq!;!+mcjo{}RAiJzm{#ymeU0)P74YnjuP? zU6=TLT$!K{^-qp=dC&l+w^c=sYrDdLChLP=0_-JjZMjvEh8JiT43}y!@0}XBt{}C} zkzlQ^URL5&AgJP36Sn32Qe4=#{tF_X_Yxk<1$!Ar+b82BVz*-lmANo}UY+?oa)(|i z4`UuWT&Sx<7IItfwEyZF&??Pb!AMuGM&H1gMM=js5uv%_=36PdO|*pnNq*H`|3i>% z@pdZF0QXCxXu%X;-Y>7-plivBw0#(^TVSVaFhI==^Fi&lr+dY3nB&GMgnd_Feh?v#5N9a%rgi63ys~g!$(3-lhH_teMymAKEY) z0(qTW2|mb6)CxzO|1Mh;z_`iHwi)k5^PWjgJ00QtTO8M&gH&oWj6QWVXz*QnxsG_N z+AN{09WzK?!q**RK{vU#^1Vn=fbz(?Neu3z_WU14MS>KK0UIa}J!l8}t&>4;b3lj) z2MLDZ0=@V`yyue8*4OIMT^!4+-_Ux;H>dVyX(*>$Loc6~=l&#Qdcoskq(rxd6%>L! z9k>h3Ximq`229#8z&BQ~HuZas!;3)KWr-VqXYz=<-0U5*JK`vy<@_JHRwz#-_}Ak9 zgG+Xnz|Bp=gIt`G0xq6Hu9IiZH&Sd~(D}vk5Sm)8Zk>pV#6M9bLB6u;!asWW7BBoH{9*N`seN~A|*Z<0c&3xihxLKPlh689nsS_!9FuBni(g^fNeB{92dV|Q7n!D?Fo8@d z=%BO!*%!Ye|DAzV>PS?+>5E4~&zA>CsJ6dR{tm^54`4|2O-_STx@zgVNG(X%h4fs? zmETz5g&db8yj1unO1}pQ>o_N;K#q;Vrg;5wMZNXMX=G$UQ(B1d6}aOkrg@!Vxd*94DJ_7&e`dP>jEOhW_g~Lxx^yr1-zA*CoOY@%J^&(EyqQe_rfUpl!tjd zFmXX!+TnTT8P57&#to`|uMo3+x(%%OWx!GU+Y3)mMn(DxOY@8QZOhuBbV=?YpIc%| zK^z42qQBw$Icmtg>;k=!zGlEDf?XU%ZL=l0w?^?xhLPQsY9hjZW0q!RxM-jJL-kx@ ze0+>5q1HwRsLX2Lk)tt%An$3Msy|fg-#9F&JK!jmE((^ubk+{hXBD)SaXC#RZcJ4O z+d{T+!T2(mc28PPfZp+d``8p+8`)b+ZU2cNDXPq4QP2{1(dtUSbTI?d)jM15lH8MU z=p4zw1%u-qXTv?I7Z$u`2v>0?nqQC0RR6}mHve3RGP3F`rePCtbR$-fdTx{JX_}`Q zL)NY^_I*6FG|zjOrxUm7dzvDxwsV68f@(MV84tp+F6Q9=52ioZ3j}QketcIQ@lPy0 zhE-Y1=FD0;+U;+$3n9FF|1aF~A6BvKhKD^55bw(viKNvEX)u8jY5Xt-P^*|YaWtiV z`>>xLU^ut3!FM0?rndx>DY1H+m_g?`Nhl|!nBj37gpkeLU*J8P;nw^Vx4zp zIC5DCQFvtj^-Mm6#VL!=yx>V#dwaedm}J?Dib2_MkpUfXT;V5yiS|29jGIu42zpL+ zdBR5*r(?jd=T``nhi6UO2`MaQ!oJ0S&L|W9OA;?4xrMCL*hni&O19)m@XLzXvn*5X za=tzf#T6`RN{Z{fE%fL!1wRzYiIxt_qCJRKZok^9!lKZ4T#1$b+ZP|HEE@mW`5Jcu zXJoqS6P{W$4P#J1=5WDFrKo>HQAZ|jG61PyHLS5uev>sb2p}h|T8pG32|9?JYmL|m zd2pVwWO|DChmlZd=nP%x$|t}*k+tYOw-rnHM*8kWR74R#vRXAvk=T3HkJ#h)4Yo)e zD#NR$d{PvD4DEg^LcQb8>XKNq_NfCH%JPL5Vcp6|x_@<_`Wy5gng20yAYnO*+8AgP zY>)m209@gs}0N-R(ek!e%mIObw%4arwWD z$wY+W1y-~bfm5IwbG?K?V}k1ZaXN47W?U}HVvZ=IZUP&d^KU-+_eAaCPRS3Vkb+Q? z&I`x%WZKJEIGL@6aWP(o( zc;3=Ud4qhscnC((?Bh^|qW~z*c^ zd*b^MC0t*Aq2Gf>--_>lzIEIlNMI?i(BMQ$(8L`Uf`ERHJC$ZGl`ZhdI~yf^=y=so zi#JRmb0LcMQJc+rO^H8>@_2;&us`k=NTM^uVv}hqVLenW!}bS$xV)EYA9vbfZ5%a* z5ZVuV6?~fT&=UmGdmJCN9Y@+zCol75C30p#lj0y_qcDpBC$KS|lDEaYsYp1eAah|r z*DSdM#I_N&>wlQF_0?(U0H@UUVZPZlfiFsMS>35RTJKx&@1JjpJuPh?ut%k|e{oRc zHc3VA4NzS}YwC&Nmw_*CR567(S&TYfnd>vSxnl%nNfE7$U|8pT{=*m*s3iBK{Qp-u zZ;>?A>XjjvJ>q;|o4=|$y^H;n-Ge+^OV_R(5=fG`+D`1JYVk&cMq+%vfI^*Ka1I}O zcEk27gGL3nbynQfB3*(do6*Oxi@O(LB+P%Mn*R7iR++94d)Ix>@riPp z6-B`F9nY2dJQX)UA#60S-}JDO5+hfiOPGmIRvC9>RFL}UVn@eIH2+>Yj6ou8XQTaxPvhSh3(3`FOBffLQ}0&GGQ?I zP|esNsi59XsVugevYjLoE^1#5FPZw>D!KKz*gs^G` ziIZUBFniF;C@ELMOXLqj^klEs(4n>7h|)M72bXTS_8q1cP;i-@)pQ86x3!a3sCida}rW%nbRX- z0r_V#7j)U)Y%G$f>~-?hU14Z~sx>YmS>q!_84JQ&S7;G9w0Uw0VzCvEv1cbX< zTW$)_5XL!PorH0{)d3l`PUL7dA;!>AZc?pN-O^~AS_FHHqiJ%uRaTRqW!Ju(AXQLW37 zVvQT?(-X#pHF>Abe4id%eyTw$y${Cliwn)%^Wft9t=f9x)5Dj+f~prl%SKPM(?{k4 zpykzldJSkUNKE9Sy58lCw?b>M!P2LO5;wza9BtJ>4l@pG#p%|5=Z>Beb9DgU6$;ey6=G zj+E0Go*nu(tWHMM`3B?5v2Dt0m(Jz>d4Y3cAZwP|G1rf6Y^hXYRaRK#xFZl4fD)^J z`GCj)Z3z)|m!*}}BAKF+eu+n;9L5N$*%Eo@ANI~*yEMTq5JP8zI?B!#j_hP~;ZKr3 z&9)26o{h<;1=N>_Q-SupIaI<0O?uF=?O*CAfDN>|Ae}6*6E7AiLK$vY1M{Zqn_@-J z8$;yp1%qCzdn`vhG0t3BP>rP+q zn?ikrs6}FB*N#^0Jh{?Is_cOoSzFX@j-bi_c`7p&F+M>Fd$5jMSuW(Dt(j-5SJOYk zV&qD-W`Q^^(4=hcpM%cfiMmQ*g900YFYl?ArF?^S>n6F%r->iGsq0u4xSr-Dyna%q z@j7R8CVXHcoTLQ%LcecDWupwEPj~LCqhtzBRDb9SA0L6THM$S%`@|RAy<&Lg<6V}o zwucYN zf3V%vna^21A{FHL+BfxdS>9`!JM9lu`D3@Td~`WkvbEg<(+ax}6Qg*?+5W?PXonpc zyn^Fgh&s9I2c|tTIIt;RZj^iE_SmYv`?Eh-coFT@1YRpVDdl2% zf*QlMkG-h(Dw{3Cy}<<~*X{ozJoVZbpl5I_pINm*Cs9hjSn zo_0$Q169O#JGCjVmNU~q&cuO|QxVpDr4E0aZ%~sKNduWAwl;&OYbaH2kn%a;)@D6k zf3h+=#8Y_mruY#4#qM?&&Np{{$&HZ2CGJU#UR<2hptJdY#|8)rY7@XlzNK!L{A!8b zr^)4ruQxLUBq>Pg##p(-6ZoVv+{TU7GI|AUIIefS-tYGKcx^dFJ`^yAM+O{u;F%u; z^P=%lzaPB>SzUiAu}ZazD7siT6dfWfjk7-2=?7*hbOU5^uy7_0Rgb?n8%*OxIjJnY z_AKDi!hg^9#~YP5L;EMffz=EO;U{pU1(FW(EgBLiFp07FrHu3t{V*+++=^-*>g%5C z^OwwQItisETNQj1r!{;(-D-`)aL}oG`sg*7m8jgpGv;H2DI`UR0N!7NkSWA>yPHux z{Jk$j>U~XRe6}+02vWDwTN!j7olzATPMeJPdH!qllTx85)3~ADmG2OOl!_!gypzc$U0 z@pfXiUmO2|RGGHWHI=7tr)iVfw3Vjwp<&t;q$yWtPES}x)x?*jSe6Da%%M8TDO}?X z^0T=0vyy+R5EO|^7;U-Ydi^H!@?lgWR3NBw_2c5zu=Yl1t7PkgpI}i;87Q`iC}Hz( zQ@N|G&}QE^tyfIx)-Mg1M1K93)lOWYea|5(B(13<;og!5BgnbWq!>>sIFV($#+;r~ z{+@v9WJs)of3f>>GhAbP7L-d#$wZZGJ6wGHP%IZbi_~q$gYo1{YXnKStl+>9EK(`~ z#d;8(=Rb>)ojBN+dy6sjijf|i*$AxiKtGq2Z}aLH1FRh>`=c`qGDN`?P=-V>Y&{|r z`wOCde?=4gf~qGJi101&wvK)GEF&aqLO)8(nt0Acyz{t@ zkmQH5y6}J8u-bnBpyl>|uis^jWYcx}$L<=T9E)(J-A$c0dG~rk=tl3K5=4A`_MVmR zMPgja)TejnwmUg9%oQEn@U{sDVi`vJx@w^G}#L567#(w&W_UL$gygnc24zAAV z+dq2Vuh_O(t6$Ca%V@|UNw_eK{gcOX(#LIVle7qKtG;hjFz zDdT~)Bb47DBYGhHsggA}rpg#&nX2&Kn%3k-+iG^gR}CLXS@Mm`XwZ*ukWGVMQ^6YA zGaiy>HACOcF?wt>XkLq5+O}^n4?ospX8>y0A<>Spb+aKvl8IOV;v5(*in@ z*f^;GX1XLAHjS3}#f0EIw-btBn={DBkY?thvv!;!$K#I542`L!Bh&4fV;c9sl#eO+ zJB*m#$R8d3v}g}7ZwmOI63S<}C$e_AlG1x(31nz1`gPl*qxQDc<4Svu#aU;vz6rcX zRWW%SsQMPmYQm<<%xQ~Vf{Nm}PTW=S#sMV)sQbG&yR58stlYJ(Pt$nYiDxkxU#5A6 zf1Os$jomAF>gp()JR3jr`=dn!Dd(yvOq1tlZr$rt%ZK`o7qs)=7EG=h8@J4pl4_i* z3qIB0!-@$ZsMIb!13W0Z^VIUKi`?(p+-wWG4UNxMs_XsSwHLbW3pNVk|mkBTNDv zPQFLnPG!$;1SK*^I3y@Y=X{e$Z#E-BXwk?)*$AzV&*`{eW)S8?$sOo8Yi_1W!t1pXU_~ zov>%l@eXf`ZrRSfcT3Kg4!aF+vql_G)nq`!J;O|j{>3oGt1WE57%f%YM2YM-8^NMm z8_tv$`#x~kIo=#Ww6Z!igQ%bivjmHGZassfagN}TR5675sc{3^c=Tv4_XOddMzH^) zwzqZy(>+}U4;u#nL2UT@?|aP0qco=HnN`zL<_#%rP<<3t`0l$+rku7H2FA->jx`ex zT)&c$5yAcc%By|tK%q_td)_e+0}Rz)PtWcj;XfNDb|4E|QWcY)6uYllGj9*9`k7ME znIgs!eCZMo?@ylU-i2nyTIeGmkNlk4M3oE{72d9j)xMn>c!{52rDZ|2mb*)emR7(2 z&eVU5FFKBbh(x}nJf|d4ebS3i7Dwn6BUrL)xum}YE#Id4v0&T(BXC^hZxQz368&+v=kC0;cW#ZUg zpIfi4$WY|xSjOC#PKapgYs9;#z0DFC{0*isf>vy0VcuHn41AHx5_NI$nk?OVPk(_o z@FJ)_hQj%D^dzP_HkO zPWxm!g-89K*1?v6;8<}`Hjd4O)2cvP-Www2mApO;xi3vFO#LDJ`f&CsYrZP7$$B(N zgKkJ&i&&cb8-@X106;98HGcYGa9{KMCz9~X;gl4FXMZ^YM~SWpZ+T!Sjm*-hRzOaL za6tquHzh!fOV!taTt(XdTt&a2{=UX8bd0{eFf*z!i|N0k8vQET-!A7;$Sg5*Kj`!m zTTFN%8R3;^6bZ3-SZ@)7VDz-)zZIB{ok*y@y4g1TXB0L{t~-S}{(Svfd#{g4S|Mu7 zq&ny|AmWxx#&WD}yw^N_llFp}|^#V;1#@9cFD%!TL>^X$qz%D89#>JUrD~b9; zQ2WdeINxeu$NXF?K#t5fYf04|BTW4#8n{J=vY#2y7QAl3JS$6e=KxSq=Vf`WAg>ok%rQKsr!B-k+D7YQUW6x|fnu zWdq`5mSlSkseRD;jMKTg8d+6_t~pH{e8e-j)=i~39p!XxE(Y@Um#S#~Ovn<&s+On) zw60JipP#g}ETWg3Bq?zk#;srn3H)_*CV?kWhfA1XG(Zw8&U{};P}FWKa)BNFrM@?R zwqc3-sg{_MpPL$~mY0@0I8<*Zsjor%Z9mc6bBIRY8@d?m{~70gbyZ$g5m#Np#K8=l zoBr^vlpX&2k|gRbom@=G%PMB)H^xCOS?*LhTaKto4k`Be(kH}6MkvH+5n;TEAQ`)Y zFdA4`rKT(2>KWo4zL>u9#*8PMG4v=+_{X93^}FNP5_Vz*ta!Y0 zE8G)tH!mD>veq#%GSbVKZrD6?^g#UA={v`n-|-tSI=Dp8t!YymSm>+;&Q*#6rg^$x?6KA0x$buUHD0o%BI@6s`>Eo*C+*2(8`M%`y)B zo3WF*GqUb=s@Tj*)lhZ5` zKErGR=`OG>v>=LVUgs$J_pZd-;5=|?`h8T%Eu6+3ak7*QXL=!aZ zwb&bpQvsfFM{E)t+oxZR2E$=A3ZrKQJ}YWG%9TdbpT0GvibgqF6EL+fk}{1_lG)XU zZ|$z<1gY8Vph@`!$^*Vo5qAA2OE@+gP%|HbtFDM%G*+M)TKCF zc3``<;{d`}cn;14iBw09z{HHB$A)jN-@~(taP-E1)%NdS5bz0qOI|)lwo@#!w7V4X zzF^CpEdQAkaA_AyZ?PETUKOvUaUO3l1=CtxjaY4_ZnMW;eQa5{`igeLyrN0}*vB72d z_h2Q|IqV`|_KEd1P08EKR}W)Q!foA_3}wr_0M6E(gopBbt!`XG4d5xr^Y#XbUTwKK z6Z}ZJxesc8V+6_ko5g`~?b6qZ1a@?wS=mCdQ7oe44=8X6R@vic!?G(%Gxl19mEY@f z^yx1`2F?J*52p)ub){c!E{ZDR5@^^|na|>II9>^LM}}|DNa_rtDi{ z(Wi)KC%FDg!Z=$(e6M8jLpDAnZLE%41YxzUYYjDPci#l{-+?6VaZMk_g4m@_Izq6f zO%UnBX3mYhZ$fIsKoXv2`MMj_4}X&>{w;4zWty|6y_6n22__L_OO>UcJ%2k+ttTM! z%~GpRHHMS--SQ!Z02aaVsBGx?-FGkMbe(mw@1Oj?7Y54iNI=h$g4I-x6{GIS*r|I2 z=(I$~5pRdz13GV<1UPr+&a~I{^_%)RqPmj6m}D1PuHtVp4g4Gxd2%-k;O9WGLPw;DruJ8bS6l z5?LZ1iW-4TqD2A;!(WRPy!z8}NS0ryuk>!@Omwbp%)X-nv=Ju{Q-n=${L5=+p8A)O zcwc+~WiWtt^&2s5pELQqT{t6x^h*e&jSlDa_2>y5bmCxkY!!AkGNLA+oW{pcFSnLcAU)a7(K(vqk0Mb#N_w3ZZJ~%6u;Q?sr5ax^cWMrExo0} z{z=kU1Zx2G$7ks*wE*2=AErobW_Bk8Wpx}-t7g!rb~N`dMaA|Q)mDgxpk4x4fT zI#9WYF%9K)gHHB+@b6GPKSILst@|MTU~plk%E4#Sj^?Swj%bwydLN7n;*gwop1ZbY zG@)UNSczfE!{4c;CRkNCBmekn z`i1R+pkOhEQs+%TvgZ6hWfDBU*BN1k>10;tDXgA5sZY7T)!&ajRP4u2z>(CCs(mc4 zdvs7_JRiIh+TUM#AOL@8wMvFpJxtmdfwSy$B0pAb(9)Cp9w|^S$_e)T#_&|nlN3%g zOQ4_U95M3Y!9DohguX1YsDsbm*}_j`?zH!YTe01S|nG$aYhP*}2=x%&J{4h># zh#9fWA$rNoPMd(IyNV3>3*`_q%QPzG1mwa$$D{9?JXeG7xiP={)yt${HFJ%u!^!8) zJs&8g&)O%IuRG*-6Lqa@^Ahm|pNC+NT^zoKyYSUSnsrn>Y$|5@Cv?&;(23y`=~pvH z7HfpV_=D07+zE+y^k1N$g8}%j+Cz~0@&F`ps1)l!){jf_iI{6ljdqk(`eMpo>M#}0 zGdlu<5c5X>naEp%2q`oih3nTZJslK~1E_UZA(zuZ7_~GLo?o|UD&V(oK3IWhy$(6S zpH%o^_30D@8lOGLDNSEHBQ(|pBb(nizvX+0L>MSoc!G#b^pf3YbEs8h3QT20?70w& zLEBxQVt;N~vd(a$pNqea9{FIv_WjCKsH-POG3!rx?Df>NyQ_cwR;RWNvZM?T z@BmpwMZZ`ldb-67-&v%NF!JB{%Uca;T$;8IegVVCw)nBOvV)70QrMyFTEj=P&O8l!pQlpg68`Rrq$*C5NvZH(p5&-=H= zPpnNIB)R^kEkEI*FfY$T!loM0pj&IpRzI}Gn){ho|MJ%82k4qlaJ*VP`-7j04M#uC z6Jr!Py@+R&kB-H2WD)#>skD zNZ)PR6XrL&^4vOfM7L5yf zHhf*~&g2McJ?exX0d;^UjyZrMDL^}+zze@(E!NR7AA2ruJg`Pqxub0dr;R4xJeXas zS6JsBMCw^H-)4g3w%Rg!7p{nnzK76|y!8NGR%kwJJ|CcfXG8TTLqK(jw7H|Lv{!j2 z6&^pjOpI_BY8gCqVykSr3G>E-Q3HExln>7d`R3`27f^o(KDvV(Eg{~CqMpS8$4;F=7c*g@?sf(T!+%FO{}{Xnmq@be>M zNEF5-Sw?n!tKMoU=xovuGV@+Zg*H_51u~!2t)>`&6j1pMyi$&%3HeKbF@XfmrItVyx5BUp%0mhx-`hY+gDcl5I!DS?$+~l*8j06S^NuhRAN7 zZaFs4>sOSo$s&tDM$~};pTo&tdLlJ$GDJm7{cv_IM}B>k7PA&Eg$8Vpz5Ip1wgHmf zl_-7i_k7je{$qk8>f(2b>>cPf_ogE#;^`QvhG(ctu@4rA_hvAVHB>hKTTX!_7D}>} z7v~U-3S(TagnxmHzgPm`lc^|!p zb545sNtR1&PXLPigeVqI@UqPzhJViwHoA@a_yO5pHh&=)PUb>>9eu5Fjz*!M!m-xx zFGoKo4i0_H?bX4~8n$;paiK=gw8dfPeYXnaO)K8YsT>nU+qKxtwM)uiVt}^^8I*k+ zi;_@Sb$b$0k_eSK`&oE+S)qEVugcd7RR6UN#nb2m_OQHanR#cB1nXAHaFW+R%vfgZ zv=fE=`H464DalGZ_3u=>RH=Qm&BC%&10If1X^S}N4A(%l&gC2LqK_7DIWYAHqi~;E z`E6q}(fDaxxY!$tevoG+z%(%fN(+=1vA_jCNMCPbJzfO$_AabSeO1I(tR{Qq?o?22 z{#Fc>_?2IXC^(=|`StKv{$RRLee7X;p8|l5eiEiK52uxF5FKERb8oe8aH{z66W<@5 z*5+M+nB-LGtKeXpGjZM7z~y$tCU1PZ!A}|>b<2c&mAEXDguDDfWi-EWNKhl5ENjEh zlg*YBevN(YK;bzR9h-5(*7=*wFKhlC-uO8&t~Sr~`EyamIV1@K`GZX4OVZt>P~{;r z>O+fe0wP>!)+UGojQ6?##n&eP=T~0$EuhO<*B8%cijYt9TbCcuTq!`8Q#%&1Cp1E8 ze1^({3>NJ1v`$0-LgKhTE$&;k=Z@mrDq*^1d)C`h5^8e%QhY7*m0MNcffL@c;4?IT zP!{OZp~&GAWvud$2DPq{cf-%kW$lIETVRqqW1&G%T@^^^{+|nT9XS(VO)g~rF*nD= z8c%KFvyHB*o7xf5m}TFUyaq=Q#FcMJ_x7Vr9$%q++kVN>WIESRyV~rHiM9)l50KD$ zm7gQv5xBv=`&rj5;Ha#6HA9o1CPSXg`U}!ctf~CObP)uyERZnolM%508he)PUw0@* zaMW=&%T@K^Wujr>e z{-Fx*8kXJ>Nhg>ddHEE3Is;~ZdHa_w(CfR8N-PD+9dp@6XuYv!%*R>s0ci;Gg%$C$ z{u;8v=6K}gVyVVv)^9TE^YGGizf{>AL9~%{CluD#+BqLdb5MC!MXqp5B#BU>$-m)6 zUBAXQH&vmQjv+zlxHTlKW%MfpbqG|zUG3AFp75jAU72b*6Wx96X;ya!!=*QiYy6>N){6>j}f=1xw0i!l+N>WN1<*l6`I`Q&!ofkh-ET%Grsc9MB(Wc~R6x2WZb-oWxFewF-fji{ z<9S@(?a4`UnV4ffHIi_Y2^FeH)X%JQw}=waSgi7*mk!!n&9|kxf@Wt( zT~w_~YM3ooxJ-*=C*#3Va_uITVWqG?ZYyA}wDN|V{@=L_4!SrdS}o9|MyXg;zc2}< z(JjCZpJI#n3-3FFnH0-E&11C{RQ+rKlbml`d&Oq%lVrnud1L!>vKB9E#@uJzs;dKw zIv%^pq?knpIf=WvnfFg+@2O)m6YtW}<7V%Aw-=b!C1M~bNTxsVZt`u741RqU#5_gL z=s;__n`*UU!&C%LR?0H`N)u;DJ}EeRV9)kFrIGRv710Qf(IwELGxUcp&ol%FfN)HH zym}P9rVfZ^#5^q!s()cFrnC*y9TUv^Jq>z6G1K=X z6HQ(fLAfNEV6gT5()=6Z_U>b41~J=WSY`fOCzlV;^ArL0^LRFPgA1!6r6C*SpA@V- zurIfKe}Bf(>d&>HmTmv422I}xwL@D+g5EBJZYkjXKc9*Fo@*zsK{=}0>W`M2;!j#^ z!(F|2UDr&aLiXL3)_?ng*;NJ2DO2izjn5p6sf&9CE%6FQO}okyuKG>nPTe@otHKip zlWkx0FF(4}tmHI6|G}S~*V@ZI>{lIn#&Q4-LP~a@bGbg^+GKVj_rUTo7s?_f1^Gk? zo%F^%VeRKYD3+Yy9jyBSxaBRL&!NB)lm-^UOwYlO4SdF`13h~FS26>h5g!W~_pTaP zcm$t;g%^Q(Q`3IyN8@@1eGf<7$bRbuRu{=KI=d{N$j(65pKUeKP4; z#L%q1_ZpDHI7eDQR7R-bHMq11cu&iRZl~-&@6>(?*Xg@1UVE%L&z{g2Xt|w?F!g)b zdjMn4&h8d(!Cp#r@_Y=)`2d@I%zKD?_D7)b6@?$!qacZlFQ)Cvn3&i9I4&1j^J(cG zH3;)g2yCo-m@pSSN^(t^U(#_RnJY9lHo+9OFh6tMk;vPmlFXr<6$}(Dx9C~B0`B&8 z2YxLk} z$UN((bu^m57y6SbM>+k=SE(~qK}jz=^+Ih_R-_7N=mX>$E+Tzk1o{5orG^ z2uWO?_$LFsh1*|*x~(n+Y?1!CAya7|lGKK9!}KKSS=#utb9Sok`5ENUVThB^+5RU+s=I z^$j%TfiTnL!YEKa$eYZ|j0Z4}o`%+5j`Vb-Deb(RB+gWIDk9>%s+bC|2Ctb$KsHdB#}o zw{%6?Awp(Lr_!7o-9yx@3}1C!P`@sSZH`(HGus2Wvc+`^Bjgf!VG{!-=m>yGu;NJ9 z<$WMb08*0fGV+WUj(iAwab+#3g;{9nel@7;-neVf`24o^{<-%28cr7Cm11pVvr)tS zt@gL_vG{Gi(N68%768Mt0BobNn&g7J?&L7hrfuos>^TzjZPV zlTr1+!crkJ#q-p_>Kp9X&?cC{o@ha3B*0z)p7W;;A-X~UHK3M?GGNf z0`N`BFV>@ja3i<`+N$=0FVJ)XvFn^gnDjh%@9%ME5M%r=i861M*qDV2P_O3`su5{- z^|o65SUy0_NJO?l;q)uoI52V$MxoxLnnXWsqVB>-Gn^b7jEUnOaKP}}tIpI^7dQh%o@WSV%Tchs~XQU*E*2G+O{#!2&g zj>@F|b~K-T$9RF*=7xttzz18{zrJx^i`*yCa`{~pA^$OyYnMO+w3qR8>)k&gW4x0` zak}*85X1fJVXo4*3mQx7MyuBYOV#HU!Z?8Z7|+up6XuFt2JU*Ye_b%GuUEyL$I4v4W$LDfX9E}197zo8; z9&>KE{{j+Q0>36H+c}_}opy%QDye%@g#Q?mpFrp&yUaLWko+aaAEo5+i%KYF>z|+7 z+I`ezypb=rKI5OtRn9Y#j#rK8Hn@$&j26A8Dg_7_y#NnG⁢GpN^qAD67GRi;BA_ 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 diff --git a/icons/effects/landmarks_static.dmi b/icons/effects/landmarks_static.dmi index 1a7617d3bb4319a533a4472907f02591f78a70ea..9b5757fcbb0cb8408ebc78a1dcbcb6cb6b99b4cb 100644 GIT binary patch literal 18187 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 literal 17982 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 UXu?jPy8r+H07*qoM6N<$f^5EawEzGB diff --git a/icons/emoji.dmi b/icons/emoji.dmi index 84cc8bbb90bea41fa4d223d63b57916b04403647..b325a46992a80520afbfb8c9e88790edc811380a 100644 GIT binary patch delta 31166 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 z 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 diff --git a/icons/materials/composite.dmi b/icons/materials/composite.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3f30e21f31d3e5a913e5a6817d0825367d1e108d GIT binary patch literal 836 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Μ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 z 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
J=~mybTG#6p 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%0A7V5w6Mq%qJOAeIDGS-gs%rw&g3OsvXSP~+y)Qgk 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�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 literal 0 HcmV?d00001 diff --git a/icons/mob/actions/actions_AI.dmi b/icons/mob/actions/actions_AI.dmi index 2ddc7923cc3e56b3df04a1d90612c3f5c2265117..1013d293eea0ab09cc92a3ce301626cd3e568bf4 100644 GIT binary patch literal 9630 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 literal 8853 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 LdZ$<`ZyEYOOr4{T diff --git a/icons/mob/actions/actions_space_dragon.dmi b/icons/mob/actions/actions_space_dragon.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f8af695e0c476c93336ef7274d71a6b8b75c2500 GIT binary patch literal 1134 zcmV-!1d;oRP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DLJvIAigLwtwf27GbOXA7$|1Q#hF%=n41b=!&Ro27MH{)mXstW zXX8?hr%AHw@N+>XkH1Y#Y z985#{f*~9#kVuF!&?LjKA_6mTqb>T>Li<>>h-zU(i>$zf)GA7la3x7CTIQzR={$$~ z4zGu2#(Q6{H1x4KOTn+n@o^VIUHN%OAcrot2cTjqtieLdXk+ixx3ZI? zMgt9f7{lg9g%ymq#P2zx2Eq0KR7{06ciZy3>f9T%?MT0)Xm5vmg@!(iVRNIx3WmGe z#*#z{g6#pQ$gsu|mS;MEO?9Wu#yzdc0BX9%=Yuf`wnh~Ef=L+G0r)`#Lus)+02O_# zq2!$xN)iKRbF9sQc2(!wWFN+24qGcMe#zZW6~tm8usr}3HP*-)%g~{lzdne;n(hfx zd+E~xV%NTAJpg^=B@9iv5ZE4oiW(S!Au(6h`q-48ed&(=hKgejw6`=}bbT1JuW$N` zoik!7U~7g!mp12{6`E?VF3^Li$zpo|Dr$59J6rC%_d5))-`#B1l^%AWtv?F@=3p*c zGYq<5DBT^0c|q&JbXRN-Kt+uX00t!hF)u)?zy3XI0r+4mo6#>Y#4uS0fsHo8az~D*+fFE3&@J*)clWPfRRR#ca+F&Y^ zVFFs!CqNAO2Ibm+8wheOA^7VHRMh;h0JKpt!!$pDitVQyXzPA|eSwM^9YACMtbG<3 zvVQ}dafShYXL#L_jnRGhF z#IAgvwR4_WVrz zv~ig6Ls+o@1Z(O}^Mk*yBmf-$;`j~Mu52I6*xhGH=@4`PLHB|Z^Jud*0TokWjkzyH zs=MCJmm~&_0OQcmhcRsKa?ynl!UUj;tqG`@4r{Q%^0e;qLXnt+OnVU5a{qf^;D_8PyUm`AZS0Tshw4d+{i4-EW}uf+4&xJ==foPtyzetxkv z0TrWQjc5FyA`Dhx&7;_wfQq>U6>|wH<_;$BAFGCekN+uz0ssI207*qoM6N<$g0`s& AGXMYp literal 0 HcmV?d00001 diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi index 630dd55b60ac68f3061b93cb48bf0dad58d32580..3a7722d9fd97567a93a465286ba9ba3168784e4b 100644 GIT binary patch literal 29519 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 literal 29137 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 O5s;HomaGsr3j81QhSyR6 diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 6a92b3b152f8777321d411649471075f3de68c50..91118cc7a468504cf6e7575cd0b7ece769a3d751 100644 GIT binary patch delta 21254 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 U`8xT3qAXxl%}IX$`-Tx zQb)7JZ?`79r*4R7$ICOWe`}~gVV|af*tt7SPKAAy;gLBxIT^XR>fg6u@z~?QXtST( zFE?ii>64w2a4Ih#AS*l6$YN(j8LqlPtyvjAPP`{+;BK~(zqFCR ze4#`eHSsJ8H5VL+s#E8npxKcYL za9{f7Uq1QKlB$^2Q9#}Bkf2qnapkmGU_)lDgh*P1$e5EFg;0w2>wxcZspU3|Hax3GIp)Ffo>-^ah6r%^}mIGtV!;a|>y% zas!ViX_()=HoY}M{*uB&`Fip!hK_+1KT^C*UI}a*C|OFSGVuGe0p%~|9-ev(leB80 zw1}MrHNzxr2M*%g@}$?em-r(c@>uNCS19-={NJrs$xBsCn;|0uZ0b$}R)=b;UN4+qO-+u5RX5_Zv zDcbWBt|~P*m$f<_si#d?N1X-k=N1=>x-WoOFitENJvl6(8i&1d6Bf{%&}g?>@ki zYf}9uo>2@d?o#eBy3gO(M43pk_mdR?Q|xT$l55c_@a?j|YYXQ@`ayKG&Z*GNcgI&i zTbIUe8Vw%WJ3cEi8v!%$U`lg0+4BRPl-&aBRi*JK(sbz!43+}|NP4msP%m~zd}VHDj6emAymWXGfi{aK`AkS{VI}_+~Y=K zV!S9#O*}3gl?Cg6vF>h2>Ci@2c-jd2QaVgMr^mD_K4GZ7iK$?OhdPBqU>_u&J4uvd zc1oa7jAAgKXpktolpzKh(F__;I?$v!#i#1(t6UXEwrIoBr;bjYFb;5Kq^#C|p*--= z_jzFJ8C!DrM*}nGz7Pk*Tx0+;#d;aJ(*M+OnR3S-Th|i$bxp5oDCCV z*i)9I`#!IIn89ScD_H(;snk4fM0G<8^`aQ$d|v%QPU=Uz>u@;qdtx@JPbA&k$GBbx zlgz$|lUDRS4gQo#OoWodS8O#p@M22A9+IH5BuGk$ft@z_#v%=HQppR@+aPfJ4D8J? zF$Z)7AoFvF8aUbD6+u@17t3zc^|rPD3p<7QYVX}D^_1MG6H9p_a$5J+O1gChgkCcb zjS_4Bf>Q|Lje9xUigxH#4!1p+5ab(CNbvc^`Tu^$n`oyif}uta>49h0u3Z~=;pzD% z8dSt6Hm`m9bSB~-4F|inM?fz(xqnG^Wra=51S=K1>SagihIi3wwUg(>-jO=(DT#@R zndRmE&&TMH`YUMmBfN(3O?@UIDJN%?otH<4tnMvaoh!(7r>mV1^Lpjc3Zc&;m4N;S zE2Yx&5?S*}N!;Ja0eTM%OS-AF^L-#W5k`#6Bhy$Crkc3{U1Q^`p`oD{qLil<_9P@E z;?Ygr-H)PDQ%?!I(s3nV7>M?i!p+)kW}sD?sTGe{2?o%@ehd7B1n^(b_!o-otW6fh z#>d;tgv+5{sh6CQocmzrhkw+xp{{FTQR;1x-CrA|-+R5Qot$V4BO1kHwzz=nF)=X? z5I#4I9}r(74_O`|(Es9^iAL`-v^QZYz0ZhN5Sz_oYENTYz9Tf{la*gk66?FJ(+!)F z0==^PfRGVh6qgbx>|z!#Zc1|wlmuC;oH>N}$SakA)?Vs~CjsjiZ-PZh$+cFyR2tdF zk{#%ddG|EqF5GDdV|Mv?3PzAS`TrLRHq!*|R4rx|*TiWf=^YGFBxygTXI#UR#W(4! zD16;Ge+b|(0D>{e$s!#exaa`+fPEQn%Ja8>8xKN!6q3tu<>oZp-HdRo?!ryH9H-=w zhjH%lO`yNh^JRCc-FXaWv{vZFG%tx0n>zz5qo;^|3WN!iI`XhYC*xB zThDRq#<6ii!zJcSMy_IoJ8LzoPx1{W?o_RdN)kZ~q#{IyH;rxp{eQ8<5tPVCPge!b zsSIn>Km^Xp1;QvE@n=`-$Hz^f$~HXWl9-s-r?2mRBDAzlL0t-l%&4aO-Lv!j%JckO z^X}09|6Ih9j7)EB*P#sufBZ0fUt(5!2enhw_KPQKsd$Rhlt)fYAB-*K@df|^;DOrh zCtsJL$$U-{Tv#akV*`wonlSD{G~!-A%c3N(7SktpHWRc44iZ_H&a z0y6qcO>xc<5@2G16W8K4C8})s)mfO}0;{{F;S^0_H^hz>ub(y>zU) zN%qAt>+2v;q9|uqQ&PKhOr@qnkCOCT*z$sswt00O6`JJRRH?5<}h+<+`7jQ)JS#PZ) z*Ag3gjw z7}B-B^8+u~%t!}i@nfU~M*BYms*02{m>~&fCP%PNn*lt!XhYS$`2) z#bHArIj86E^48PWZ&uPgR9DCa{lovDb)b2(HraSkYy_d?Yb$5-@d}>vqniRq61J0k zsg*3&MxL{woVKLIm1|Md)Hu#KqG;2>9T5+!@%Rm?s&8%+KI}XJV|J6HLXRix-1{C& zfusa*F99Q)fbs8!`Tw<@sF0B8Dn)PbTd8`)g= zk(8Xu;L_T!w*kNV>Jj~zM~)&2CS(~*GQNuH7$_H&lH$^Zs5nDp{Xi0N3WL1v|M!)q zE`|4*#N(XM(3AMRjoG9juk+!2%Hs#N>Sl;s(AUFmBXhu29MimD`#?S7Y6^_AU`10` z9u$2-ISu{beRFuIlKbAtGJMmqX1`rdyApeOP6=)?sCi-*6R%FJHT@RJE|rLFF;9T( z&ipHr1kkw~Zf@31y~8tbOM;2$4mlp2!$@$4OGyj1?{mn!vVdyZZMGt3M)kSrZgA#a z)>kX zG+nxs`qg|;$*kp4|BC!-X={FleSej`&e2_SogW+6Eh&(_J#(>gmK>fAYR?0YkTBn{3J zR>_x=Xg(fy_$L_f*&5K8Ae-2lZ8-gq4Z{8D=%l0Qo{R>cZ)s7-sHXz%ZN!#PA}QQl zm(pizMOBAm(`;?cx%Olm5!K4q3%hzu%)jEoRN5m_ZAsUDD%-649r%*&9F&2H6K%X6X z>@gVhVB{rd4cyLhwA^YG1H$wqO4Tt_t;jO*&-t3k_tIexqw>ilC(GeUXle{EY{UZB z!Ia421(^C=Br)jC*C05NICMWE^DtUi$JhBh$?4+t!!%Y~)0pf0e1!J{%{n&Et>Sz( zmskVPyWfnMbQPKyV`1>{s4?N3n(yQQ@ZZ6~Ku#FtP3k)Sp}$X)FtXvQ=}G?oG+yHt zkY3YG+Yd}wM3;_dMXH1zXX4x=KQ%VaFBUVvB2FG!+G81dxF5gode~={d8Rc*!LyxT z&b?!CY9UCXC2nHv_m@$0#m;9sO{9n(?5mdMv#*@8NQEg{S)cGfhl=QlBW#aR!0y~@VOYPOi#|^r1I!%Ad zY$z==7pby$9?>Bmn^6Mee?hpa|k2KSyG~`C_z$S zeI|tiSqw-6kR_hAdu-YE&+#bTzzcE6B*u zW>({_X>&(m6%0RAzL9k?4L|%i;;8Mc6tOOT2NG{T$QT3LTBT8o2C+Ni93mvT(aW>m ztuthrRzHC4GDslmwov70(rzP-zw@67WZ0wZ&SjHr{u~m{UZyf-f>e<{xVq5qCTfT~7k3otag=PJaz$Udx8Ic|t zxztW>E*pyE`RwAEM8zS`e}i`sR4>f&hk?|rDF%r1WTw%uJsJw0G!Pp%yng+<%prE! z)OvDY_FPL}U*9iS6nG6gJ?pwTw z^{#e@1}RDk#0NmrbfaiY$5)*_(j^S>JokZ0M5K~_5B20++e*QbWi{o(%HT9x8j%s}IVLUn( z^E}ien*f3kX=U!laY2T6fwkgc?}Ex1Qlqo4Jt(!5)H@{y8XCqWywtMKm|4}4ggve7 zQfjDG54i$eJ#?I?RM8lEROl2@ONM4mPXP(5NVI=;k3zXb!q4%4{{|v&ZcEc>_rdo? z1zMi6t>4(41i+X@aT8 zIT%PxRhtVY&M%4~2ZfZ&s3ga^bHrVF7RcvmXGn2=ZEW2{eYZNoVDfg?^1-|)xAf9V zdSM_GSx8}ZnxZQqMWGy#d`S%hK`bYCGYT*WL9AGCir>1{|DP9D{0$RR0D@d z?!V#J)kYFAduQB@v2ElcB&N%N;F|pV5a?k35Da8o=ze#wkBG~8324=v&j%l1YcHN! z%;yGPtnYYkDH_WIz|-@`JpKS|M=&AE=8aOUQO6b4XRL3rs&V-~0ZQ0UfhWQfQ!HT9 z(k0;g(4!V_X$t?Ni(pq3JUa4D?uuGe+f%-)Y>D3Ok@+?9u3Y?9XBx@t1^%YMTt_|r z_Z2|x-=lo(j6fb-<@Ued{>U4e)Bf4Q3P)Ecih$ovq@_{cmN&dbk2b47ugzjHJg54f z=a!!XNT@q5_>IqEXccT}gNktX4UaqFYHIB?0CaCA$(WXK+CQ}p(bJ;uu?at+1=QQ*uAX0ir&wIb-maT_@2BqS*4H^cn5<*A)a zwIMHDhQNq5Sdo8dz~!x#sqmWb4V)IJdygYZlFaRI@2$ucGgM05UZguqegZw@_eq6r zI*&Bj4#(9q%F7R68Adk=$MnuJa#kGrkw&p8Y%8ATD z1MoLD)(^eV2uBIhDvKvu+?6bJl0-Xq_^RIly~4ZUt~>*J2D8P#wyojcrR5u_qIPqo z=gMNb%ZK(?wwG`ae4n?f4VBwC91Cvu|hr=Ik#GIU)iGW-eQ$Nw%C&jNaR}$ zw&J^#1A@EfE4(r&@rB*9fx+d{=xpV9qwtq2DwA;^{BArIl#u8{5U5Q}x2%d!f5d40 zi$}Sv#i;oVz*^Fj$uHUFs{b!k96w>)d`?#8T5 zdN=MK82skXsmU&5eGnP&#RaT-uuzz_+yZ*9nwg0rt@N?_E$Ns~@ zTnzg9{!Z}&EJrX49!SwOr#+eq8<;EHh*cTw?GiQHHrT!4SXHRw!~1%c9R`BqORYL8 zhZ!K}!*>hc^I$RP;GasClx?Fx=4WDuqYJn{Y!vuq*Q2lICtNy`TkW)pWSZv3D-^6Z z1TQ`-^^`x7l}h5?oP@J79s2BLur>Pjtv~La+L2@bcm?AB?5tF+`Qs0}FkKen#7GSJ zTuDmq7>Rq+a{G!fsxvcoFq_<>^7JLhzeRIg$(!QkzJ^Qh>1x&h(#BCJj9%9Z6qEyk zpHFt@6pz<@Vqj1+&LSSaFnus)k20tXU;FNH!l*N%u0dY|P<_~!Hk1B)qtUPW0*zf= zJJV3fN?3Js<3TPInFSu3m=qWo?(@<7nVWmRJLT8+2^VJRs*@mj``2U*Q$Hwoys?GE zxqE+9=!jx~BoYKsJvvHwMl*4At#UQy*HA3t&(_xEJ_nh7Z?U}udW=%4`x3@9_ zARo9W{ZhqS@4>`cfPptq9>BonVOa9pl9CZ+QdAsK?NsQdm+wu%BbM%(9Zf}L6_2nz zXzE3MAnL`Zrlmy`78W8SQ80=06$M(Jr|&-wMCd*{6ztEzk9bA3j1Rcq>y!cmDVJNB3~>;FudDh06(R#8zFauTX+Cy|S- zG+G$^muFZNu}mM4$9L{VGhb$vX@1@t(A%522!g(xsw?E}g{Zyy){deFy1^VXCM0;P}u)nkT3v~1D?_^-PaJA|hKf&uEQqzBqNJJ)aUtn3U3*CwM z`Lo(r%fcdU5r@IV>z39CN6fYBWki|z@_-V}wI$YeR2mjq(#IXI{>t~QNeTGry82wbT|Z{e#|8?R3zwhFN3L2@F=vQX3VI$fxhe3dh^yuaA874d9lMMn_kLF z+*vKX7o@ia_5iWPvArtw%)0-=<;#fUo7z8T-gqNs)2vDjBf;w#&2QOJvtt(Vui_83 zE3#w;WE|4B^R!6;;jB}COMbZle(e*KU6C8 z^C_N8H_ta$Q`e*yryo~*1OoAQKK8>LRh2>W6lj!9t5!c6Q#iZIln|2SvV=t@|oDvx$*J~go*lJ(5i@k z`I&9;FwQwHk0)Z5G(TGh_kUCHpgCJCo}_g5)*qa-g2MFdjf7b6Cmj&ftLjE}U|jEV zO3%0e@if3C6wTW@NMd^V1+4ln^ZKdq;pep&$L|Mme#4iLChUzf4QE9povlY&nIHiF zX;&;VmssU^M6-@qmLIwRb&aP_bH!NWx*>6QfqDSlYE*1mvwVj#urS#*7BS~K?>;m} z-Eoqf2hle5F^C^79;cp~nsRqU@P_dz-x}Fp^C#T{S0DMD2Kuu!SU>P88JeW}DruJ! zZAmpZsC&JzG=(`8Ms@9Cg{R&Wk2*)!@UC9B?F0ik(7EibYE6eAf*FvC zl4&GY+=>;*X0w-cy=jBZ2~UlT@@lsIvkgOjTbpY z4m3G9`P}KjHBJX3sSr9d`{=OH#^~u8B*jkFMT%F)ziSk8!6sdiwhL76|Qj}5yyHXdM3r&-k##| zSf9R~qU^_ML;ZQ$rW4UVR%QPjDsllw%W0rnbbsuOR`AA(8oj9iKfy(akpwb+&FO>g z3wG7YvdFGEX19rw5(kBXVFyWSYswR68S9JGd=+}hgg=)iJeFgJ_J%0jx0>uKs^|D* zyI+5U$lH-tw6)FQTzq9>+H1LjlQ4&RuQqhHNB)L0Ctx{OY$D(2E%6D2*FPkz!+uk# znMb^hmOtkex*+CC;WHQ zdpCI?80w{%Ht!RlOZ z+cs}gq*2~e+9z1|GQUVSJel=iajJyJ7q#twA0~z z^<(Ly%puSEFEakf#WygEoFZYny3XvIPxmC82{>sx4*nz?SdX)N#`g|aUxC=!X2*|( zw9zX2G+76_}{W&c@q7lYZ+HM()2jUIh7LRwNYC}_hpzt(=pG8B9N{-gF^Vd9@%Kh>Uq z-1+ko7-a*J$U(`cSF>_iOsP!|pV`{JxBBunqpt49&xj7J=DeeXL?Q!_P~xa5P&OMm zmb9aeZk;D1x(@i(C*HQbfyW-GVN~y6|uGhK_R#sNFLvfWFi0oSVKehF{ z5nuA7!lv^G^*l?K1P^Q|PUF$_E~%S3G?E`x1dhtjo;z2ha`ox*ZrSQcEoi-XRdYo? zx#xqI|C&+CJ!XeRxyO%i{f@V&y&uSp9O|tanG#52CO?>}loG244ua5PbA=+jSK%$YK}5RV{_Hwy8NuFc!}tvi1X1AdM>qC9Qh4B ze-f9-+~=5dFZScv1n{ZZaa`gfA~4UdkpMe=`s;O#Q$UknjFRO^-RjiZ`a1#)N@mJ- z_k{cF#1Vwo<2i;3q*^fW1F5!0s78I_mD%x-`fnQn)T~Fw11Drk!zPt75CsN$l)%Uv z)E)T(L%~d+`Ft86^W)XkCVN(X(XL%y8A7X2f5T{Eg`tR2cc>x(3V~hdFcs^9+b&G5 zk`G60`MSED6a`x*CL36)3VR#xk^De}D&;Mz_&e$km$co7MR2f;mD2K?&@BZyTt?^f z{eboP7eCWhe+QG4&UF4y7&=bMrX%F&Q&6kzrB=`{m|Xti4=Uw*h%eYRPuui1EgzTA^H(@{s4Xv zWcVZT^`}{0C<~5e#KKPuusrDHJrA`E%7&^H8{tLPM!%eJt)&I_ckq{5R*)gRX;5I% zAUikLdb%}89=xL{_yV#J!fJuBrg-6;RV=l+F~Lb)84BYUSb^!W|b*UdR> zj@zZP*q;x0fNxkVdp!930?JJ(9Q3b`TT@5&P? zx78Yt`lpM7MXW&U+zYFY4->9_{sVonf^LoYVMAFX0|Oc)V;;N1st>Qyb7nwv$v@n= zAmfJnz}6J-_E#WD24ACf*L}*x8FnV%|IKVCEmXcpq z#sIwJ^^$I(ENT%j0Qm9Kr_4gf4+$jwj9NOtt=6o|S6vzS7$3iI7z`ef)t#k0ht)xb zT_AI-XRuD#=A%zW!}VorSpM!yiYELzhtZ_&vqsplKC&ANcT(?cp;Bm!1f1Y7;?kmH zJh`+}W<_#888zC>^mc*z^^-3&X@6EqshwBK1Oyu|j(LJfb}4#JJ8h^byPI!~P4DKf zJ}$Zl;)D}0FA(`P{{E?YnEt-2bOY3T_(P0Dz}ndYnxnb-g6(^Ug*H=Zso?g-(5Sl zgOM3(q=22MCf7kG9z&b^{Q!M20PqeR1=r{2kndB=pvit#Jf11`Rah=v>#dmPppo?O z#zWKR)ep_DcaXOu@+L_O7@rM^CNFnCg7RTA4}vl>H|GfD{}DcSk;A!MK-YJh6w-ZB9%D08o%O`Q|ay0$C`-#Rs5=EDs-nsUYzm#1xB-TQ?_aWjS zwHHI#gJg2C=KlMwUif5`uYV;`-*uxG?t?OWlj3+Jw0F{slF-^bTB%bgKMBgjmd^ST zk0hykrLJNmQ>RQN{~bu!!BNIpY-Q!^iTqbVpiW#uhsmC;6$XB>{O1bkKtB;Q+v)|O zByh%;J4(vR=I7ygcLD;G&zw2aKROz6@!dn@-7Aa7r&Vn(K}C<@@JJ}GQqnp2F8r4vN(exO-> zJ}rc8Y@`;1^Gko08ZkPOjJG#+@CUw+T=IoHXHEGHWuUwl0&Ny>y}V$$*Fqna^y;eL z7kS3=fQ1M|yyLBdG6_1>*14i*w+`HeguN-j&D#9O7==NqtK~fkq6^9iab8+ln#oOe zqXj^z7k})U2%qxw*Of z`}>hArH#D@&6JdGMJN;1(8%cB`1m+76$FfH-BRg+!~JchMk1>kr~s5hAs*x@J|zTm z*crds&Q!ly6TF~I%HFLcyCYM5m3|wu^*K>G?(sG6m@$ww?CN6rRroXr*5 z{)B#NL3`x*203`v8fL{cUixqM;-Yk%+16yoj)Z{o>NIz4QOB(KHPx>~G+r3k2p6KR zY;MZT6CUj=({n?j|Mcmfs7o4|6&0s1X+)?!d>Fc`2aLr7Po6xv56{&-Vv%mN^4FD= z#=q(@?wsvAZ5YTgy-vnB9E2{&&yTA?FrxCD3CN2I8jHWC#J808X&O)Fy-vMVJS!ex znbo{qjs3ZD^o!CAHjwKsHF~qQ;jQXcuSZ~Di*cPt#t~=f=rs7Dv>zTGo?le-fDXTG-l`pDUcdUq3D|Kjjpa*jHhf)E$Z!~T>fy#mn1H+T zZ0rUfux|s+;yc^Qz*aI#%l5F@ZFuyjPe0~~QHv9`5-R(Pmo5tlp-Bz*-2g@?SN31( zp}auKuwi&|#7ZKs74AglpZ*9hFxkmGt6V+z4V@0*<}|9jd!V6EECrtKnR9h4Ln~)GW0?uu0rV> z8fK}^2K-d}X9->cz|reo9qhj_7mxqe-Ob^*ySDAvIrrlIeI+U~GZ{FVu@exYH}u}q zHeEo?nC+~$MbwX|LMK7LJv0vx=RGy#A{P=T#Au2lR(X!KInkI~GnNg)FqQr;ax6K-&?) z(Ds2sU;MW`*^q4Z^F12PCQFY=3#Mf;nlV!+Fv@cu{py;It~OM!58HkG-~BjHHl$AFg-a!c_V$+} zq(DJIhTps~bXC|>apQtn>ht{P|Ly-*O-gjz@v9(5o?1cqc8?g|f`5!1M*s0hH9=F9 z#p7?p4Pq2R=@Ntj%@ zbT9)P#lTKS9XbN9aq(m1iO9*@$QzdJJEx6b+2|CBoaipzcTr)wQ|!dWcu^2)A9T!F zBiK{{K@kybODZmI-|+I4YX!P7Coj&Qv|6~fqn#i1Z=(#`{{XF_*_Wa8Q->Apxl5kv z?;*N*k)wzHbkXY{H1u51gRjs*;r7@5#xhTHjn%VHTDT6VxSJI!4p-i~VINc3i|Jjf z5_rOb9M#%*#&`&dB+ae!0e?x+uoD3})usKiI#r|-(Q9{(^K)-1uCI@^Go)D577LGx zxeS$EH)|2CVq&sdFgbaHL+9;%O?o?j*87?}_c~EFHC>uIfE)3<~&^?K=&(*r;sqo#WGXdnNbK10zs=*#uLoIiZ%cPDi>3!DO(l*@~6e*cAnbnV4%Zh-F+?fR<(ifexEyNUF%u^ zp1hqrZhQ{q6=xi;_qiiJjxbimV6Oe-x~mPs>f-gV(8o|h^3Lj5a97tuGqQypYtGJ7c>VUmk(;%q1j|V5PGkmA*W5h(Lk7roUeXd^;a6Eb@# z_IsrZr~R0icnwNUf%g5;$r$QK7GB8;PhnK>KMrGJRFS82 z8^JtP9^f12^dDpz9Su|W&J!f~Z|?kTqI(|sU}rfv{^4MMtr7nmf%-uNv)~F<@8X9T zxQqfNa&c6;LHZftah#N-*5LsT0$z~2^c!e7u6iXERGNc9a*we%&deuc{ECvJ!1lLt zJ-zK}&->=8Ho3X%P)Ok49uVH#*ac4js`&RpK&#jYGo!q;z%d-q+8q7vCQj*9euBK> zSqgkto9{ZUS1$fxS#7wNquZ+j8$~K4SW{?=jNJ$pD6N}0Ip?|xjR#PjnJHLOS*cg` zCHyoK6Vp9NwHrQpl1h#3!KISsnYl&B7)sNlXlWqROfNap)c{0KhX9^gMFN_K7W-km$N>%E!)^7ZRuP!2m27X#gXFKl#k zE4XKe+{1-qIJSEvmAOx||8FmH$`d%&pGB-0T zKnOoiUst8iJrPHhHdmZZbPs}A#2^o>WvHE;y&Ec}H>l83I(p~M&y{A^F=gtQewhXW zf$pz;AUcow31e*yyu8i-zN14fcAgbrqIeubN^io~->Elk{kb1t*8b;!npJ^qij?Df zOr?OQyy?Pwzfo&cye~ECxL~LYVBFkvVakneF>IUoSCC3@c2V28ntr->lxiQ@)e!)6 zgln=@Zq|lLXs3P2iGN9Cq5YG+dj}e^*+i7yfRHsvLP>J~vc0|C5X&!R zeGCZs@PQcu6;LepS^(YaB&ujTf^so>j?l7T>DL^pp3o@{?>4|f0l{nif*%DgPG zB%KC#S-^e{w$w5tl?sD)(jQX5JhpG3_O}itLdx-0GEEK144<3wBx<-w$;q^L5AORw z4md}D4CoUD)B>*o+JPk5|I@;i2ST;J|1*tDR4Cz+wepkfGcEQtb-7temaJ^!DAmcP}6yz#Kp&V#7~ECYu|E27_EdB#K$x-6QgD1*LuMbEUW0gb_>-a6`8l zsRGjG=4QpkutE`onWn}>2tDmIvD&jd&GIt!R;qWXHhl0?Xrba!ya9m@OCSTx(HEH@cQxlMMsIn1o;dxU6Q8w_^Vrtb$)j-I;(2n>ykt{kra zj~^k^KL!)8@Lq=9T4>efe>SLF!)C(MIUcdPpUlGTi6e{`XL=L(GHSh?&GPbxHyjHl zPfMDX8O$wcB3qJvO44D>)Jb`v0P+)``AuX3ZR$x@)dkdrPgiNO5cHHGq$`2>X@V`O z6_+=W92k!*0g8at^GisSSgBj1Dl2#ofQlxk>Su=p>kxozcVu>Uw$aJLcVxw!?9(B3 z=>dB0HW5K=5+@G)0UPTbmw5z#3FV56EMHnq!21HY`QG|#Vr$8`aVhSQ@T%S4AH>DV z1KkoHD#?G)cNMkI+cF&GPS4GrcJ;cg3bw9aYacFHxz9vM{AvuehXiaC*L!u)uX|n= zV)ODZZgLW){hIHXAi+}CJ%CYaH|m@58-+MV^982RUZ|`rFFX0i)YOAJyJbYTh!pPl zF?iPn4Q4-6P zh5Y)NEjZ^5KX|`ItkOye*9XE}LK`b>(SYb9Hs7W_Whm?h6H^AHu7WLkRqzBP1P z9^&(@+)LR9Jt@*XHx%5y-r4EXDC`Jpf_YxrEbK^``RtBsl46}GI`hynB&4ExmD+n; zUjIfxhD9bq8V&%+#>RGWc%fnPv{N<`@v;xKNBFNJS7V(`1Rq%2LUQ8#msB*AAMu$s zeO|Yr1#W9GoB{ITAfm!NCu!7*30jei3;6OtQnC4_@2afwhBEI8zQ(I7D zq$giUP^>KV@r?-LYYMxA@n&D6&JBev9%weErTnJ-^S%kn;WkCP?wtlKuz+tWeGby3 z_wK$mDiu!ehB||^Gs>wQJ>Tw3IYCDUo&iadq}io=ZQbVG>Z3O>x=T-=sFV$wA}Dzi6r?&#dro4NDHG&FvL@&cD!XqG`z+tn;l zapyeuAB;pAKk^#>Ht+3rC0#R~HHN>u7y3B;`PF6OGr^UmB$6Y@`bkLWW?}U5oi5U$ zg-uC8;lD2(DJ3l}ikF7YmmZR@M{T14U^du|g0{=}WO+Y^k+n;PKv-uBr!H@G86`8l z=@xD^^5sJrmlB-;)lkrks9-N5`5*gc_%`Zhgm=Y6iP-m52TK3orntp(1eC7XF}vnV z#j2Lj96q`XNaRpd1NwiwR9g{)I9tYOd;FDS&HfejC6UwW?Rh^tkp z)5pY!=G@`uMK+voO!t` zTBN0u`G1FI9v=bZ^$#1Fyp=!nRtuS`HqomU?2w3RPGU9@mWfd7#ZE-2TLhzc`yz~1 zLh}!~G}YEo>rt^Dwe~AhhwJL)a?xmAYzriB8uxVr<3fDe_aWh)q~1|=5!9X`NB-^i zvawUJvbt)(!ur{84lZZM%`U$UFMBMTo6~}6H@)E>bMqrPBy^}t{B zbVfg_)zukJbY2(PhF>y5IS3GP5-OQnCeY}IgE%254$ovRb-#$YKGJkH7WiDFG#uWv zUU|oCQE^_5;@V9a5f}u$si|mS2QYHV#NA@goVok7Hi`Ayd+!YTSQQcWj7j>XPsgTn zc?b>j;`Bg2pq8nA#kRFggY~#U*arfkP8iGEB^E%+_Yqm4V851sem%{qwXQ7Urj(dI z3mJJU3lEZ9@f219VarU{KQ>cOVuf462yB=&evn#i6}SnH*;|~d)v-F_H0n#kO4;+( zz-^YL2KErl#S~2>7h|12h4uyjZ1o5K8|(?nMZuf2Rvu-x9dO_v*W`qBt5%d!-gs6C zBT{5Dseg@3S3y@N4Do{bh(246Abf{EN`UH4Wot^rhbYl27aGTYEpn=L1&4c|sbM(_ zeW6lqI7bLb3&Y%2#i*>hg|n!PTq+hgiDCI}3Lx%SQPezkCX}}&a6G8nA1a7O|DD1_`1j;k(9HNsaJ~$ezo(Q!H$9LL zwCm!=3yi<+cNAZho6l@NAzcKR`_qgh#5f=R~gwNC>g(H&GeNXni{*5vs$L(VG{0)5$(TUk~n zQr3S#PsV(<`XaNwbGoz`bq;+AhpVUXRvXUaZ#|ZYvVnsQ`m_@2r|fy-7y3pq#c@l`e?)m zHrx)*grmqbq&c5$@KM2C4QHhhL^I3g@ySvA*LK!dPRED;;J#CEMKkOCOKa>-8 zE9^TPsYav)&6&3f`fq^GTI>f9mFdK~N&)*j~cs9GrTPl6m&moe{|fNC-OD8TU={ zl*3y1LUnbxL6a7CBjZcw-XN*q4OAmc8{D*Ru-{6exHG*yRl~w5sUP@uV;j@ldxv;$EK8f&k9f$c561C+BY5Z!Sy=t9%ci{nz{K9`B&8t%g3m2%8Zt^~mb^t5$>R$}v9wKhW-PE^vHNF^tzO?2i@Ou8W>=g#6)x1Mtd(Dt5` z>ky=$_j6#>Fg}Q5$Fj2aLz=HNbjM&+vZ2h0eSCD$&p`HV4fDM6rhRd{u2_PLE)|3V zteSNF0q@X#-i+hwFUDcl@*l0Am7+IiL;cNV^x`aK(6mYsI9K)Dn0L+M3F}f8Q$Hqo zspI2Ids9<0@GFG9s|Ehq+QSnkgTE*+oW&wUP2h|-1qfvs2@+*%R)Y0tJ(Dar(Z<^T KG|>|K`~Ls~d{j~Z delta 20491 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 TgGQj}7i4|d<`Cnc*VVrPm(Iv| diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index b8399a818e3f901db44da0ce4037be31f3e19649..b852f45ce72ae8c76b3b88bb2672c57305164043 100644 GIT binary patch delta 2292 zcmbW3Ydq6`8^?bP<8E3KInF7gLUOm}^fzgd98;83&NM_VYQl!@oI>SH*>Z?9i$#tZ z|CD0p5Se36A?7qf8{7VRc0axE@1yJWz22Ye^}61VuI?NmVv*1jS*S1|E(QR=FI+zt z0E8BwYHAa{N@AW~-vq>TduzO0PiPwvw||)!vhHHOz$7F2n*0p>!ayW}8;(P4PZt_*bXrOW*Z|A#tT!Up10C#C~rPDBx7e8bh zQk3YEp5f;vo_w2dk=|LUJc3%?l1o5Di2H2k)>Rm27=CJLDPIq=HmkuZEWCPAV4q`v z%`|p`(CSY^9(8V*HAEl#zG*PQ<9W{PiiC_?-@1g1;+VsZK4#TziSZpWj5o42gmtKfHetUxi ze@B^rZq2l|NdDw|t<&pjkxd@2ui)E>rJ6d`YP)Yk4@2y= zQ~Be(+jwYQUrN~ciad`76GWlLLueISTkC4$E8DbtJv(g##pgz0NqgqHz2(H3+#@|% zroVakK7ELum3pKCWWTsb9d0^gY3kD>5n&-SNwIpRL=QPj%e-iF)s~)~eL$S&>Qt(- z66$_Gdvx0Bao(}z!5B|D03s4-&^s-zG+`S=G!Tkx0-gzwFn}F~Lx`!#$pk(dM+uFo_hv>O;9YI=~GsyG<$RSgqH zMwVXNq0!5#VPRpljUx3a%Si&^eNs|S1t|)El$6v#Cy=VT`jkZgfJURQo|TMFNJ!XI zCbUc3Rzm>l>gsyMV&-V{$A|sEZl~_a{}>|tU#b5Nt&J`VqknYWT1zbLWKh8p(gh>Z zFZqk}<>?NlzGkqaZ8q{0;`N1YVi)#^fYnfHcg(l86DmFVeG_Gz6+*y_*D-WR212V& zZC0X1{Y~4c)AePDe*4V*aN(A0QCInjQ_GP7fKTrce^zJtS6)t0gpgtO7}43t&0qNP z^xWGKhug4_!@9W4d)`Gn>LO#3y!U(D8 zS9npU{b60z&=^tsCV{*bZ3@@&?gxd)$n?16fNiPsWbG|uH({V+?rPDka5aDd@<4!c zeSA++b}KA4ts(i6+P#J|NT5+sf${ZiX0oLvZmAahHTVR0FYKh1h6aEf69|ScH-C$q z;3EX=(LWrGzi)-ObH_5c&BZRa^Zm7ug++12U&-d)K2ikZ1J`&{x3GKaf@G%;4Wlk1&vpaPV-x`5Y`?z_p& zd?!l+-C<20XdVw~!&Zd{!)-t9KbF$xF4SZAR|>N#iHOUY9Sut5@ce9S9xbh}Y;7}` zSp?jWsUu*Xg8}f!*}qM)}kL*v&*{NPy6jo|X}0E?+p)r|$ckkC-!9;Qm+ zdio2BE;Y>T=(Zncpq0R9+Yjw3B2>d#)&os%tyWH}i0)M~4eDy9ftTIW%RiTOMn!-- zJ0zh(10bz@#P#~g0!2n_RC#=}??T5!EN{KmCW%Si6*SHA@KxyTPG>$(9KB}ZW*7KZ zxsgLYw2{NZulHKPO0ZF)D-_z}-Sw&EAN}L0I?%t^`hR{pHe^f*+%K((;0y-GjP!@l zm$EQQ4~-}^pQ4!OhB}puH z4&~v%#Y<9zpFeHsL{f-y_TgQD0k6qv%;yrQS7lc!VJ_1%#Wn81q^*YSo)ji8-te={ z&NNiFoheB4w%lLw5mT$%JiQd5Z&eFAR2AdHAN@UgoRl&mOM>(A1Shu?h>R{#P)uuL zVE2)+?g~<~mg{M+E_dvqDjY`59SYT|9ii36M%cAx%LYj|W|@}YFa;FO?h|=%D)wkr z>r1*RUgik)J#bNnZ4nd~?2sXSH0!kfSv;Ob;gq>B@bSS8IkidudO?0vSf~zU>AKC{ zc$4WVCl=?aZ)RqH>AX;~Rawr4F;Vv(i2zC!O_Z1-U$opkZ2;>t_UJbj9U(tV delta 923 zcmV;M17!T3qXEyD0gx6C0pJJ*0002f)Yatx00GvKB`AMV48hR8f+0(^tymTfijL+! z{SMB$T~cyK1D}71Kc%0#H{V}=oZigw^;BJea=>J2^Zezp+LhpWFtz#mRP6=`{lMEt zX3Jn|bLWA>&Q-!O>GW;$rh2bNVx$z5h_Dqc|jMkB#|QU@_OOj zl8p5>Vjh1$F7j;MsI#Mu){Qbnno5yu>SfzD>>%5VICc?dMNhG`xQf_h`xcS&9;1K! zFIwJg8yC6qo&aPUr!dJ<^Fni!F|r{wEfx`6Aw~t}mdG};iW8w|9W09W=6wq3Y~^Bc zvI={zebt`;x%<{%Cfm!38z<}KHTeK4$q!UIcQXlh19F~`O>GW` zho^53pUK?x{4w(nZUK9Kuuqr>`*Bp^F zdx+@9f;2WvV7+2s0P8$kb4b0MhB_*0s54{+YVv@J!B+-=xXRoZl8^8+xKU9fI|O-{Z#j0=T)a~|BAm$#!izMiVz z$8z@oLxwwSvl#*!KmrOJvo%6{2!E>?yh0F$Vf>eHa8dgg$jMdhK~}kmoc4mfD6|`K zl8YEuM}L6U;y{YFl&obB>LU%xLG5l*dHgMXB=B!>VY z1e&G+Af==~5MVwOa-2IK3g!C)0i=`wXqtu);@|6)|K%lhUj;zV=8Aeoz7ivwL(l2} zR9D&mTfuMqi!0rHc7ku!=JwvZADxSH#-YJG`e0;uXnpS zKTC0bmNI)SEp4{*gTWvGYk!eq{>f>IfuTXO*4}DA->QzT&H_KBU|O{mixtdcEwaw| zxZ((Fr`7|&!qW}6&7a@&&{7`Hw0Jqsq@~_xb%rwQx9Wt2hUj%k?eeJGRrZ x-n>7&8HPc3PmiPQrR8P9tE*-nU%mWi=C6{~Re8U#z1jc(002ovPDHLkV1g7i%|ZYG diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index cb4251fd3c6240b89b7d7340c5c03331577990d9..9cee375488cebe5356461042b3628abfd43bfd68 100644 GIT binary patch literal 12348 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 F{|9>-jS>I= literal 11008 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 diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 5589d556ecc52adfb944e42256017afafae29ac5..f56f4eb848fb76369dcef7e3ded5753a6b98dcd0 100644 GIT binary patch literal 205639 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 LcqY_}I`mg`_cxN3WXw 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%0D5pXOO4aNR1@j<6 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

3I%*N62ah^cQLUmr+YhukihKuK0-puUxMT)G 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

qb)COQe8#UxG+c0+?fD-Pvv zXY#3{`Hpj$_*1VA1sN!s8%894FgWF#!ajt?a;IU$ZjhH|AhzKfPQsf`^LSK* zkB~SwEK0n-G@s>+`#puX87y@u_am1u`w^?&@bf`V_hCvRPxJZ$Wxq-k{n>}y>GPN5 zM(+81;|e$Oi*m8V73;V%N<|wH&Xgt9rNB=(-B1qZkF@#2fj3H5w0U2Wx6ie1Z3WB0 zlrh?OoJb{SF0x(`K>Z38QMo@PkCzh)uSan#vQ4+9EQgJ#MZpq4R${Nc3OdEm7HiGE z>Z|;-vkID2!K25csN|E+FVABRG07$6Iv`?;=QSbmW zP6MH&o9=6`%H<9ZsO$%m`uuRA*sdQ8A*kYO5>Sk#V#F;eJl??zxOHa0}N3`hSg_e}}Ydd5vx zh*gqAr5mP7yV=U7Pd^~?V>irOC{6hCt81s?&ov+KKX*Ix6Z1Kkv)^LJzK-V_IdAdM z=;Z$0N7tAv#<*U9ZXsuJH1+s7NbVGf*}Z?sEEv8nTI=Y04ptIyYNE4>Uo%W=8i#vj z;=c-m5x$QJ+HJHnfWx{E&9W{BZE&t|>4fL~^7W2Pm6DY`3G4o$FT6BTtZ`>Ti(B61 zG;n}ohJh>sH=LZr{QUe@e$8vPBfcg5WLnc6?d)VbmeID9zvZTFc*d?jJ2TrXDkUzZ z3GHt(zt#FQ#}XsZe5>Z*vkF0S1ggx93uB1k$T}!(pG$)BJ6>GIBFMHS^B+E%pkTM zorTG~W{T_2H(RbJ6Wr8DC6nUa1+?~B;Z+SHv{z|Bllf(G%XJTLW|wYBhOK23Fn$9j zgt(qQssx@1HmG(F#tRHe8LHnoGdqaMYGrwxmBn(#dd)Wk^TiL=@$O8H_?X7s>*IO% zj32skAOffp%z1*G>Y48=I|e8dr4yE)`G=VpCANjLWBQ#U0}sm%KU=+T`bh4Zn?O$D zT9E32U|4tBD{HR)3b#!tNZxD8s&DIz`Ro_pn_QHg5vWHPZ_~A`qB-|yD)mKhpfx%> zJKJ@4*wx9+IVhlGpI=0kzRtx;`VW2DlSFyfJy`^1mxGqGw)=bg`by1F13x>RtxsJh zB;2ry@yrmsQH&@StBS-WE}Q z!!1Hui`hH6Uhlc*S;p~tg>&Wl19z@%Dpi!tvLlD%nhsb;S1&b(gq@2pn&J6QJ_?(o zD7igX{({y|JqDYmY$68`HJ-Vsk*I8ehAlJ4zPB)A1M}j2N-vrE757EKT;|%jfd{Zv zU8L3acIFQ;;GtvedHQ4<$Is=E+`yVTU1 zp7`t31cI|!jGBwV?6-y{{xLVFhLC2Fnj=~Uw#>UYe~CYH$4gcG=gdrD@;m0XV^SyZ zE^Qr>Tv?ZRKhpON8w*w_sLT5|p*cK)^E*ZgRfc3AKhPm})E#wSeh{4bNql>=pc1yH zKousIuNd(Ju`c74-b+#$qBLn+?vMgHHkho=g;-N(nq2L(IOh*2nPB}F_gt$B-D7&w zJt#Bxhq{{D3)cgC0qO~i%I7>7$#sz*C&+T#>bc<5kR$cfizN+x4yy?!>1DJ5KC~z1 z6BG>hoIt`b7GtacIsI-cMpPa=a6rwV1=uDAZhPX6p87j>4y&`FM*6)>nbg7!tDSkQm zlQQ3Awuge?UpimX?GC;5wFUFl1tm!-md2+ev`UaKJih9rgIk=s?(7hTF0(vZdO)kx zpt`!s)2WEHew@isgx~GahMyqZv)a@>YW{kyg8M+lvA&7lx;(nP@8U6KCte^adG4mY z@6Pv_{pJx6h+H>coDAR`Mxt)rQhz(=S$FH!Ek)1QSvCjdJ09hn2 z<$3d_8E;5B2qfXjRpzAdtlG2E_8BSUUc#FD09W2dZi!RdBVMbNS2a~@V_C_}*?YRD z#mcKAu-Ca7 zi{>>Hh^l!B8yXmDL`aO_BNX6W zmIwkM3ij?Fjnif-=Ff|mQ7Wey<%w=Wr(wg}1Q!!?%#LI2peT3qM{Qz!4NJ~fM~?H^ z4cCxgpKHrwZ#v)Fh-e-!mGw>}T8@GYkuTAquW&(&um_P$f%-{voj(L#**8;Pm`2Ai&NC5^qCJf=@K;rZh%Z|Q+ zD-re}?|g;)&KLXQya=LRlo-uN?4Z@ei$l|c0c38*z)1=oleAqIdsr`rJooD7J1<0{ z$^gvU?Sg??DzJM1s6h9fBrZCpLJ(H6^#Z{4+rr$HdnhlB+?+s2)CnhL zcMmp>1J3Us{@_sUDD{u8=+22;DOJdOk+ax#b3PBR8B$=`SvcJ!RPWV)1f8|=fz67^ zccla@5=Uy;iL&FkdO0cXU&PDfk!y}VqDike^*KY+CPJ9I1*`8YVWe~jaD{5xvgvg@ z*dh;zIfGZ(6*vvV4SK)L8?=%9Tu02!e=&14#^smQMQm9DLv@jm{8}C9!2gQzL=myK z-hlm=3uT_+|M^~%|0|_w)j0ySI&~x7kFL{IttRh`MbVW1EkdLm_?dyJHT?{~gfCX} zgM=%dXQbZWFmAWRwwn=N`)NBy)ba1J(piN6?UCu7_v?w?hi6Pq`6{_NC^ufyVv}Y( zS8y2~v2p6a%oCc{pqqsrloK7x1he@O^Izy-ftgH z3;YCjj74rh?>`xTW_&i85SOo*H|c_-aX~0wq#(b6KgoBu_}s?co61(#Z@)aFEOYU! z&%3_2C6Z=O{b5npokYlwJiPaA=vJRFHbOi-qfs*}KI8E1__t(%xR{o2qr(DfC1qNv z5u9QXJcp%O-ZdXObB6EC>eP*Zt*91(&AS&~1nm%2u8@Wv`V!ldZO~X6js3%P0+t?8 z>ZjQH$a(}lKNKf+%1X%7XjOr?S@5>a78KJ`t<|b}{ztPmyYG^}lmD(FHW{hbtn;-e zTA}QAD>&F$w65hfq%E~nxaC25FBxxL#H@sE`hH8wbII6gxIk@LRjCc*_cGj4{%5xr z?!qW(+x~To*~@U^iLCvfD|>tAiPLHCG&ABTvh*K^E#E&>R#@ih;QZdB*yaZ(-n={g&V;VkR@5V~$-Rps~Q^adT@k_lPSYHrF z#TP`jr?&SLu-V%0zpv6rWSUj{p9x$|+7W)UG>A1eF%*_Ewwo(Pxq zL2dTU1IN9(J6$}6FhqvNOVxk^_fEX`G_3>v7LG2i8V9Nk`V2yCDKK~{X`85?wt zJjBgT8Z*Mj1y!xDwR8%bHwoIi+puiL6cwFkkA9$=DzVYoYptCw(N&d-Lw?kc{c3M9 zR^?{ic;{K1YgcLcOC@Z5UGN1_QLWFPKd&ycv2sz~>vWTmekBcLSzp{5$Qk;;T7R|q zd*P3s^KWNcJ6k<>9njh-s^%4MrP0rY?xm=zjGkJRqVKWZ6Do1XO0H#fJ3Xnn^T$f`T< z-t*jj#LZoKtrx|6Y(o57`+t zr}Ss}@v0Nw(h-{<&Jz{TCK{+7osJY@DR)^?6dds;AZZ~nKgW&jXlHooBYa`}CnxK+ z?9t&>hms4j{Qkw3cP}FZ0w{4(iVy=u8r@;2jQtCtLmAMzKEiKW@9wj~-S$&$B zQrW_25PaZ*s4(AWr=3A5_Dek7rv4Jjr1S6*75|gVZX9BKR^v?$MD)pllM+4ThHRN1 zJE@cY<+tMC0lL{n`Gb)&LcNrcOAgc#G*@!m`p75e8exHODsuB>kLiY|V~>fd9buc9 zT%;&JS=Hd%89?mxdlP)xHH!N|P0c-wzCu9RD7lA2*mQ&^?Feyl-PTqJ^-R&HeJSUe zhMj*E--txPxghgsgg-?QK}wy3EkqkOyTavdxRgm8+=i0}J&^$RCMxYga*+mddyp-wJ86v9bT~Ft-tzkpF(Pqt+v#Ko-|LHp&wkLzL$| zr?IpJjT=WanU$568Z=zprSa_qShfyTXzQ?7e9t()V5Y&ddQE48swW}SmU3Y!t&2zK z4i!Ej;5MFbyMHDQ=3=g_)>~LM_n^q`OBu~|dZv93d+X&lzurqRA?Dj8Ei1AF$A>Que;ydn@$+wdD;zLVmSSQ~9NT70nSK5JUqM{7mZ~l5 zO}n$rk?M58nZdeTtse^X!1(ardH-zo5jUN_YRq%d79m#^(GK04cbjr6bou; zYW}fUI~w~yPj7~B`L_4tn{X@*ap_2+3FRak9V}Aa*1MBYP&zcqHI)h4iFvJoZ z&W{g?8Q>e;bn+Pf1p0=hqf9#EUx`+C-qpIIaN$6%M zB~FCb0*jkG1?Kd%7gd{?WA-1vhJ>&LH*EN=AnYX{UbNMZUbD+84|+;E+Gg z8+VAZGyPTN$P91o`>&kgc@}o-6q!iy@s(5iqta*gshf(tkb;i+WB=U=AF2X9^rvIe zu*KS+yVG|3y)|=OGzoIkE;jTO~^FCqCv9%)pi-1lj` z9qxq4A0v`HvCMgK_2^#Qh0@lFU-#8QLffl%Ywb6Z7U|;Nb3Wa9{bSYFtSn7jbJS3vaNJWW2LJS$ zsj7j2L8X}|eg7X>_YPX_Ez?mB=TN`xxUJ1!)e@tsdkF5Rjnk@Yn09f8D<6MbL3}+qJ1Z&4dgxRtDPXJW{a4`>zpGbeV?*X2tj&=f-r=)qF)ysYT#Dao;WApwXjJ3D7;38iGWm@&Hf5m|>p90i z4Y?q`s55osji+@mp`o)GTGxp)*>QwVeGo@xUp2Iqe-aTrl4p-|>|MSyT5K1!IpJ2^ z9z`m8_atbCY(9$Y>R{}>KukU#;qsO9Y{e&;Tin@Kb1+xB6zyWOva(7@$q6#c&25ZN z&_dr#@a;wX4?A(uqsX%Iq#Kn{Amf20u|lSBWBZ3L={rYcxw}`_NdClUgwDEohRCwy zt1P5OTn*J zY+yU0=_Y(>(c1cp>8`)5`}(wDg?B}hDd*U@G1&M{Aq{k1IEP1CmaHNU+gsLi@!C?)HbtL8e9u1KEfFu9DH)(h%CI~nH8tJRH#WAfrlt}E*XMGZ zKl9;iOfMe43Our(q}c#%eaH0{;IxpSd-0=Z*NfHF=lT{F&cLxKLbB=d$DF}4#}9rE zelOYd3AlIQn(TJDQL^9#FB=~>lX}wrX+Aa~fk1HVzS!~$p*GZz&$G=P7SXXexOwDK zMux}p?C7s@hIaPVv%xOee4kxEoMn@sD&TtB#<30-mhaQD?aEsxsFGA^gKuNo%&=a4 z#>%6qHBeP;Cgz5B@VfY?ZK>gb0o}MF`fF^3TWR+y2?~z9`$x}hM;0e3fD;s*XcD~U zvu5Ebn8&%MxHq-!eQ)4C*x#=be3$S^roXqZ@q7UZQ2u_!cK^GGmOXHE`Rf%ZByIIi z+1jH#1^*PaI>2uH&t^do%jJJIjjuDG{AcrW+W+>`e*H-}XnP*`5VikyvstBRI9D~( z!cpdF5ZQc4Nh`dn!uw}J?x)F9Lnm6j+zL)efm({r!%5t6G^8W?Mu^2K0o|_pVyv** z&l$~6Y3t@jr)Z1(!gneXy~+AQtT33%U>iX~%65kR;lsjP#TO=1xhVOPi?f!y;Igus zqcx_z!FAGD@!p^FL~|$K@(X4Ca+<~8v8i12Q=!ux(>`{g-Xrasv;I~VsLwUj2!^k8 z^f`@77)-;qmX8O~w{pE#E4MKh@p00Zq~f1`{^+?kFnBRV1;??7aYw}oo_tl$Ib*2piN3?gm?YHr@hGS=#8;6c3Y!C*OmR0$2z6fg4 z4ZucrZ7W1}NAEUIP`Q;1X8zh+G@~@(LvSBDaqIot@{JzGn&0gA?0Th6fSf0}O!fUP zRYTYBUSVi*x$iSmLF~+y7?0EW1<~@3K1-v^vFG`7a>==Lu1LPVWfM0mw^9UoVl4`9 z#Qrie<|0(^A=7)v3{>4Ysjp$;?=42o5c1*9yCb=6>CLe= z?dxLbF+bjP2Ls1&PXhaZO_w2-S+Aw!wp&R6CP{g`X=^mb(S7CmQ+M3aM*QQd1NcEm zju+bpg6EccuRZa{7in=r%)P#rr)Ia1Ig!vL?N(eeZtqpPGfo08sM`Mv0l#!d(dW;b zEJJu!2+lIrru@L?i|F$-a)lt}D7Is|i8s&aN!Mi7Lt18&4&~80y0sObJ2#aK_5Ucp z6;+|Yr!@K{Zm@dE^w?&sNcks_rja;NWrXpaMxrsKLy7^4qG;ejZfBPbvhprZcClDp z`W5$eX=!O*67J^Gh2=F}&4)^G5^WuDj^9Hl(wHccWXF8<#Ee!i*bybLCdIn7TT}RL zS>{odD)Z*Qsc)0PtV7@5)EC(j_c@i(vS)6D%wy2D{rSY<3wNZlpMP_-q2)_5j=18Q zp7w3Kw3E+ZJp4kj<@O~C5^Ks47^T%FTmlw?XZbAN|6yN3PG@qT{w?|4E(&$qYdq?L z74}Qdg>((hM*J1}vY@7xtzlU)^EZb$t!DNN70q^*Zg9AAO%Wl$wHi ze;kMxyxRi!YihR9N)Hrk`pYc?)tX5cS?>(4?KcPtKmW}QG(Yw}NAHLV9gI17rMP*A zh`zcd(NfP@o>^NhBRRTx6%w6BIB3V4aPJCY7fXnkCuf_|LP-{jDz^qGHIZ6Q3gOOX zU*eZW9#%b%a8JvfKQcL&eV#bTJ1VyD#K5t9sWWJO5aJaA(I=S}rhp5UwQ=n{pRX*{d5J)`tT5npdx_dC^(&P2ffw56ARoAbD%2l`4h^>Q-C zad6A-^EZjh9*>Qy8uq6$f}n8oAUNZV>np56(83n$_8Zd=b2x&zi^nO+^X z*-h=5Xmh%b)F_WTy$x7%Z{TnG0&00V-Q996Z(G>Uxt2_&@?aK!XvlyDDRaEJ(^wK9 zE}X96PAX4N5saz;c$CvXM`ctTjeVJide?<{kcram!sx31{`m1@W^-Q*rDf~;Vp@i% z0T3F1z1ux|4;louuP^j%boa%K?lfz%$IBb^W$46R`lID1_Zl>0E(Q*jJa;>nPknVk zd%zT9;ZVxqOvLzPlDNR+$H{-^rrLw%%fwtC_4mg)UVF^uV)bv+2U5s7SaRG~^H+KO zw(tA3Dl>^?#crX3X+rAp+DQ{-#4W`<8L6`T7sPg>0PkV0g`HiL7 zE*?JT#B_~Fdr-7>X+&v`KIV++bNFjq{*s0ZJzeOEQ!Kw*(YP&nOlE#NX?9u|(KpcL zM(V@wDc;z1a!_@-;*(QRVd76Qv*O^V4Eu2WIEC%vdl?Dkwz0;~?!(xlcB#xA2<(J) z4Un0k@&pD~UIq|JYiC|Zc4C~3iqYTlnn{$Sdy(dk#W0pm5c3OS3^<4r!MKrxR^t&n8&|1YGwclDr%6tl5x@k7 zbbH$>T%SPlT-#-3B+Jwd9izouONjv^(x-1Jeu%8|)MCzwZO&2|L38qkaj8>GjPeD} zB)+w==c5gMUo5K>b|jhIW}^(VGA-|~8#}o9hu`)c8gcg&?|I{v z+%0UWoW0grVJ_(BiYPgAex%~~I4=~N)HXH&RjEn&hmi~l)<`_*4jt0;Jf^a76Xz_M zTU9LPpI7KMLw`xCwmRv`!!Eb2n^0nu?EwRnqzcvMVzC{Nv%(=*Cuy1 zxrW_Xq-d$usT}*`M3?HhmK34G=hdx!?0#uRv*hOT9FMqowN%i37rkn;m9jvtaXsG> zWt>qT<#*KFQ?P69+X|S4G&y8(tRD1G@v11KVqATO&u-oyE2)5@E(}2*AFvTwjBbN} zROVNy(D}0-nN;h1V@m*$bCXO|ET|Y=i1~o-4RuA8%-?RXungedsTj0BTgLnB z$4NPhZpPXc2UfVNoaH;4#4n`zvf!>XYB&J~?P3VfcC0KZmC0hh(k4>8Yyu zbsJo2)CuN$8IIDtS2Jyg*nRMO`YXBW$Qa}p=Q_IUP_`#@WtVNxtrQb|Qe6KYuIfGK zy=E_v6QXxA%jhGVuE>~4fHBu45fQS`=6j>b?oPO27EnZ|-->vD+=#Pn#&Hr-MRH&cd;5@$pJURPaN}&4kun%nr?XgVO7P>VfUuw?i=LQAF-T) zQX03q55QpB9jjTtXH%S+e@|33I~{!80Q}(farblpWhXJja%SYV7FUtL!LVo_(Vvf!Ke%0&#Cp-8Cu+(W>2 z;<4luB!DNdUL%crh6x=*53Z2vG!j97$BjMApLpc9^8z^;(5!H@eD`|wIgQBqq;leA z=2Pyw+seCdJTA;JPqo(_GKR@B|BT3+p}s8*7ztI^c}o)A{Kg~;IGXT-BUjzkRx&m5=J>R z2uesuMvg!N1VexX2+4MWyZ^v$)ppgZSKalxf8D?SRlo21UcK)AJkaY~w>EHWiE+xc zE(SR?v&BcZ7W9j%m>JS{Z@Wv?+b(?jN+`>zVtS-wOihq_9mFO%aDKzWMRLA_5j=*_ zXjWLhrnpltXPTjd!DMqKQRubq*@S1kJF_Cve&J$r*FXhRmW8Ih(>j+6jznk@y4eG8 zDsZO6r45YiKtQ=%Usa+yz<=GY2?@;gR@KJgpFe&Fc-B=+;lsc04=&ln-;V2CVpwZ* z)psmbhA(%J)&c))6H^c?qiU}8ev!Pz=0tG^D0dfQC0ZYoX>qQNtvr-l4F;otM`o&%vELGSfx%LSZ@gBCTn;m8?3wwjCXh(TTHEU8-W@|kVC8yUh^0)r`=W-9kymKw1Ma1WH8#mpe$Ix;>f{3ahcvIcOAVrl zMR$|rID=;Z{)~pT#kIoyti!K%C4Tv4w2z$;oZ>PDZkvWYJZz1kCxUf@Ajb*xWoCCk z2*e#Hu{`E{E{6eX7izjw`H)`_{?50)xE0|891QlqgrIGgStB{nE##C))ZsaqTFvZd z549aek`KuYlU^r;b+)s)l9457Z}VdPn~&_EeO`M%=UW`6;lakG#}~d5)C0}gY;kgp zhhtisLT}vZqf4Kpch;@a-X#vix6D2*PV&Wl2TT9x854a)RxADI_{uJDNT8UoDqG86jRX1D?pkV4 zVd0PT-bI@?;mI18INt8b&({Uxbm>Nu8eRxPTtRr>fnsmM0#E@NMczgSy1(xNh=d{t zu}80goDR7|nMR~*S|nBcmRLm0-CG=YbH!BoO4wt%rg7YsIZ8WYQ{B9{GGu6+g>5MK zIcPhCtPMv{>BcSCR&FSP@F{+_i#$u0Zui*;YYlzaul#Zt(!{yGOuKWSafnrN%+wV# z3j3OB*x%0S6Eh)ZW_K6_5?{7T%iN9sXuU0@0+57a&bOe-zu5pNE@_9B%9B!*S(6~o zxwV`JR{fFMHBi%QP5FOI?kR@$`yh~YH@4uH1%<4omo_V_lBXP5wQ_IM*K(X_n~~NQ zq^anLk3cL>3QnExiI)!~WJz#En+0i;xMU%Df0e+(KPbq0BTW0O|3H|TJ()_Q6(8%W zQP|UJ&*PFCniJ&<+oq&fesrGGOXGtLET|Gh0mK;p-SU-0&K&twPV%o$Qj?CoC{iXhU>p2Bq96R-*Re?4vhzRCv^@G;-f2CtyQSVhfmp@OpI6; zwS(wxQQmxbL_wj`?q8{>yhbX?9`yB(#+9mE*gM&%kFHrzp=(A<1CdBabHl5hjhJ2Pc-PL)zQ zpiBJ6Ymch5CUP*BnsS{pl1!pF6Jz6hbZFpuvp<*SLqq<$a&&wRr;g)b=jcbvW3N_tMpMBn0GXFq1 zeVnx%)_9-0Ia`_@wP5kO){*JqRQFv*v3yg%o&I(M`wK5;rPem8brI7%mFU#sK`#}a zzRM?e@Ql1{DWB(i&jPXZ7wZkw@Me7gF;C*m$Fz6uiBmRO`Z8$sXPyB-_!P?sQ6?fA z72I~pgsomU6?2YRaE3AysgwF2Z>l!`aGa8S`B6uSL*65VjQgQf zXXaYfDPD=gp0p!eqm+>)$P-|CwA%5`;)S?4Wh6232~MofoLJ&GS07cO#frk-8`=on z{I^ix!$CB}$*EmP9Y&ztZ6YiLyf#BCmrzG;h}^y>OKP_p3J%%TBs|pIU&q*o-K>=$ po2+b8{;fIwA9O-ZhyJ&!rpnHA1=eno+@M|JkSEV2h;%BYA|OgP(%l^gL?i_ebaP0me@XDl9!8z9~y>k9!L$ z3T+kN$mMUi@8a`#m#>i?7l=7PD@p|f&7=uhk{YM9oy&Sp_bSxuy3%&EdYQ+^@CnG) z$vt$Xb^dvJSlB8${SL_e)c$0~Sv2r9O@&zGIiVGY_l?Dj%Pbln@yFYiUPm%U3Gt9E z-rJ2gdgqAR6u!evM#NHc?H#2R*y60K_ly&*+Tx+WO}Z-yD@}r~mgFY_H|Q%H&A?WC z_m+vcJ9^FRtY5pC?WulJ;;xST5J~vbqUCirRbuCkw``zn^f3@-}6Ix zG6J{bm6XT=SGr{JTIcW(?=qJ0yWJ%A_kR`6KHh@8lJB+=cV!G^cd??lL4W%y|HA$+ zw;a;@FWR)i_EKL18W36*ZsHZMRYR?-4{n%&|EC6BwDfE$&Rsf?__K)BxXY=xopoLP z!Ys+zOOnTx9w;jZ;ushit7XDM1}W*@Cz}1{Vzf?x|I()1JEQEJYBe5{O9(>gzr_!N zQS`oE&X7oGmTijJO~3AJ-A77mXDmR>rY7-R-urDWWXS@^@u1gv@#W2`j@z3{b49{8 z$F9uke|Y0}tJUIrQPnG@m6pm6i+3tFuJa+BL_|KZ$kTBB0N`iG!tU&8IJu|4U#XdV z)@OS$-iBQ@z1&w@yI~mbk1u@JB%<`Io^qYoX=x`tbABt6<*S(BM+BZ%#gc6^LL}$| zOoXb(E5VF;K-G@!8nL){d;+Z>+~n6PPMF2mnQcR?PxOKH=av!6=Z-$<_zSeG4U{E~ zV^2^L8Owb+Z6wi`N>yDP)aY2^H0!(B7fS9cG5Va}m#xjcZOA`hauCXl{^|BRjdcTS z8nWwfquJhw?n*NCM11|@%6IR+-FxemdWAVZxw(q(v9Ojm<}9ihcJD}+Atj6PRU(<- zD{7;|l=0VZ7SG;aS&!wtuh$*6Yj~&d6QwFE5ElU0T7=J<)xf7&y^g)%z6lOzd&Ow< z(!&dx497m;TG21N;o(N6u-{0}#IbO-}3oVLt zJu43a$n7V-8a{3*syeoq>)%J+oTOWZ9_fFT-rugWQrG`LFjoMHf*;rbvOsz2o8w3x zuT^JvBj0k)=UlIXFgev}!GclI(bI;{gEq&Y{&ey^edex5)4yi8dX2cZpQ%C@tXnA0 z&pX2NqQZ0ITC)))Ezxk6(7OKOO3c$mFAmvUN7O3Q)6-Y(gXwJvK!BC6iLA&5iGb19vqg4EN#3<+V8h>V;yYZ{_&B@vRU4o`M=AN93!-@x z+2C9#>!r#MoqOIuBftMvx0+>2?N?ytD~F%4th_~=8!PEax3;k-0ShO2R*?ia45@pN z=QV!#b{={Wz`YiaD-CWCOWO9*`(7t=(jilmv;f4aPh`No=h6k90tC%u&RvBj$EkVV zB4bWqv+J)-*?+<1!2;sgcU9h)Y5Jx}i-}5kj+^I6rz|L4t}_KKARh)~j(ykxYV2;$ z#ag82lXQk1Um-0#^Xo15eFQ_)e(%o`L9p>Atow&| z?X*Xt8V3vHVl;oQc%l?Mu8WG-uMY*|r9}L>9uxf47??@H*cAC!<^xm6zby#-sr=t5 z`Tw|Js1WJA{Z0?S5O4SR=K6Q1{tqTGj=NZOZzySfM^pC{3-0GDTg;!)XQpOJ<7~SG zenu4~=^r?ZcXaX3+~!S5mAZ%duQqEzC7i<)MI-Y^rst zdORSJZmh3IMyNkp3yRx2I#}I&^z>D$6WLgtd{+if`{*_M0(DJ7S6`gO+4QsR4U_^g zOiVZO7MzjS&%-tRR5qalF~h~v0as=??&<*K&KA-y*uXtiWqa9gr|9OU?7Dmk-pHrV z2Ecs+{g>LYVgwVw2!kCJ#OK(*vT7yDKT(84td-5@NzX6$mlsl0wC?<5d!xg|7g8Z4qxBmEcz~^@x&WQ?g~8ACY&!Oy_$&VI7KI) zDcsWQi0Y92L$gZzeU`Dl(9gAduOD1mzvL&u4996LoxS&$2riePvFm6`(R7&g#t(#Y zg*)l=b|0UKXyNv5pDN^_u+^_H&JC4hbEhjBm>q@=NQ%TRbq~mqkA(pJXu^5mLXMG3 zCeOFPfAHHV`GyK&yDOie*|IbTlKX4;_%-waH4I}-XkC2=d zdA9*Ob+)JIlb(NN4xt@`GoU}rhz|Zt6s+ps@HgwVoYdmvZ6Q7z>B@rlZmIo)Are;s zI0CL6wBsS6tUsCXSbSEd%J=eVuC#F*Q}g7{c=gh;)8GD!!-enCDCf6QmGLfFFN$pK zUYBnFo+JG-2v;y@*!jYDw=m(sC|AMi_Ku623EsDC8OoippBdRQXfBqG1*#N~dw+>t zI}zB~Ymg@N6i& z^<98pm8-iSOSSgM0)@IXcyq_Jo+{Auo=O^m1G>&9&1xLi5w%yneCYE&A&rt=pk;Gt z$ICXH)fHoY4FHE(<%LO>;2cQ$$R=?*yXHaZC6O9h?4*1%)hYdYSR8J3IJYe!=w9t` z;EEpfKy$1{#eb8dL0z*<1vpNvnF7Zao;n7AmDm&Rt$W0+DxaI6^Ek3 zcNAZ1-i^DPRa-l;E<#OHm4AaRKr7P1L~n8@2yW8JP&z1vT|U|v0UL?kiXh@U{4B*p zjrE?K@q!*ejizWQ(C9cv7TjtxL`|W3@%XHLAx<_Hdw$BvOa;>>yvK209nkgi8A=wi zj*S@Gt$Fd%d^`!R3{5?lN7qoX<9@tbV4oJl4n90jej6Dvh1~66?>OabpMaSYR|mbM z_asJiumdyYQ^=mda7eb-~vg${7_)yZLdyf^8i)@T1ctcGS)kUrqRnOSh1;2i#uiVWMe294Y_ zb85Qtr_I^8#I&GG5EM2%U4JGsq03AEd!^wgDKFf!POjpxeYUw-xCvaF4?vbre`M=` zZ;4^YkZ9$rf2XvS*#Z8CU~`hjTLLG@Z_V73Q1)GVg!h+Qk9j(|dJ>II!oeQ0jRLh3 z-L#+V7)#&Vg((Z}CeT2F(^AQMPE!{Uek{0&pSu?laB*WJ2hBNaOaT75M~{_?4+ zY__W@EZe6g>>M*6oBstM>_SHI25ujQSGqvUy>#`G9~1s_b_E}RM zZA)Xzs1&?B>LDbiS=|tu!c%&JW#?8Aaz+=1YDa@Nc#M#22Y-OHNt9>GtRRq|hX~UU zIaQ&CEf|vFh`I?>stJoX7JD|3M29bB zE9W&Hg%T%gQj+U^=E1u`KuTbfPeK0$PSF&MM~2t=VmjDy8sg17kLruEkbLAxV7rgp z$0s0yyeGpW0!*i?ZJX0yP!HDg>4^i??-6myhi@|K(^5AK28jwc1h9u&8K*DV{p)6{ z>Mo_O-h?A?$*7Adn({c}(v;zHA_$Jl{5b7z zo>THT-EN-YJ4!Y|rITMC zJn}Y84z%gLj3=4);9G<(n3zs^z#)-pa*k1sh%*WC+z@Cf3z;4eE+jJsG)>O&?tBRo z$P05$EB%g9g2*#pnll1Q`#Rdq)eqZ0+L0pemy^Y^OuaocAimV1Q-S92x1

r^IR)-VKFDMz* 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 Q(&2lJhdK}P?>`Iqf56%=vH$=8 diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index b59c86f88728bd60cae0adbb8b7a32f9aa45ae37..75f647e53e2b3ac279e17b8f2d9c5d9759b471f6 100644 GIT binary patch delta 356400 zcmZU)1zZ);w>AvYq9TG)5(o*yu?_da`uv)6joTF+XOJNafmf*^(f$iYNMLP8qTVQE7`!Z7nu*LIh%a5HnY zadx+HazsM%&d5w3a;0p15i)nJRvcH67%muZzCA))q@+j}e}QRW{c0tsPaZ>}O#0%| z>YZMV;OyxMZI%Aj7Xl8XuN0RTJHi0`W=c3cbS%5_rd&gAb=gS>etvK@^M3XBPQb-K z;228x>qmDKLY;DR%8;!=luAgGW~w!h-iOduFGC=ytbNs;UbCS zwZl36$MB=QdtRvqS$U!~`;V_p6nI<5sWhJc5}?JLipt!ROXsSuqc=nB) zHUinGD0xzYCPR^~;M?d25u6WK9&e1hXnzF3H$ z+;kuxIGR0Q`jmQMTOu@CmfWED%pMx4@M&-pT5^d|xFIl@mO5+esJ_#7RbVGHiE~JP z%Xa^s;PT=OI_Or=vlHOv^>|#oztmETW7WQqal}CN!Y;?cl>cJ0_JY;p-Il;R0Q+i< z=&Z*oQS_bhm`FKW^g__*ULk@zx&20zqeXdvnxorZGAf+6W;!BGjvruc=qnsCJr5yVw74UbFS$&1+7SgPgA!x^MAdnwuXw)^ocb{g&-BXMz zu{9^a@hxg2kn&xuoCAMu{=g2yQ7^-oL%PeCLYcT$m2eEUFWdsZ9vWZ84zO=zo_t5X zxKb5Qt-I{9G}SpT`1;nZWNRe{O@>RE>eu{-FxI+R_hM?t4^PV}65FOG+3|oJR9U>T z;S%`|jjvtM9hpCe%(GUAwco$SAMeSO`9VQtJUJvHgZ&y^)(Z1<&f z#6j36x7KDBD_pCJY7v{L`_=I{o;AmVcfMcljI_>|Bs(@(ENC*8h#7q~!*L@>NmK5!RH%Z4`l$*U2<478ht~~0 zzq`uN!b~uE*>9U5`bCBAg>Ynt56a1~^S>_sef`g2A_hnHki%Tq8C4*l?$GIsUR*7q zG~&RU_Lf%kXKO8rHl4@Q@{PrVzvW~RiJ!9aNbsu+C&JhzN;Q_%Yp{>b4~vJ1%o7D= z$f}7yRt%@)$nB9Ji_m;J59`a6X{R?w+}|Thwz9bx_Oz;NZj==fYHgMk%|}%B&e793 z>kd_A^$sQ{-low?ZF?L7(5w6{Iy-I2Dz+znTkT!PKCsK%aVF>1yqoj*O>w=un!$Q4 z24Zgq{#0BJ2F=$u_T!?QbmRgtv6mmN%8jAtZFk=jUirGv<9o*0$UV!OH&IBEJ2GB= z%_bcmi)2yB9+7b#JRBS45YH34UOaY_p~1q#rSpWX1rIB#MTW~6XqU!+%l)>^6#5*a zsyJXm{SGZ6ih)R7JnorYF5kar<|EA7?&ft7|33UsXOIy zMSZd$r20nLnU@;}aRV$08E!pp-{fIfTz9E$z3Oec7_4va6x2E>WtFt!mOg6Mg~;uH zv3Ctu$NMm-tx*}h<+)z#X5pHeWei88b6E92fYFHp+v`XWoG3xT?8`tmCq zLt4n!s{sKF&aKycG0gIQ8u%URHIvPzCo#$t(*_=2b3?xxB(Z99(~+0vH_0JcL^Cqd zOQ9b#D6{0n(6~qP{g}ev+X!t|HKe-tlAK8M8L^NJWbFKmwcfO&xOpud)DVYo2zA>b zy$CY@XjG_;KL|)=Pk0hmndCO1{GBTFnH>xd`|+U#6JJx_9k&_p@&mhO`lTG@xS3mT zj+~22>(AXvx7v@$3%|KvkxsIZEd1d76aqU_Xq% z_sY0A8W1m;HR%*0dOw4dI{O{9BOyDH;UkLR-z{2`LdA*X7Z-w=^tZPaZhala`3tB# zuT&uX9%Zd@fZ{+sGaI?1P}}9-3x0u9(H{o4hV)Y>b0_snZ8U&Q%`7HovH9_BBr8tWaX0}0hnkFgf8eK zEtrWup}&+TqayZnY!V;SW#%r1x7}T2hmQ0>l;;o_n4Qf(OZXWDU22^%zRClm0&OL1 zM~LjYy^arz2Dx=;a`FoW3^mwhxGzyH)D|SSG3auBY_d60p4>)_^1Nt5+WbQ&w(tqn zArW_hR$l%~l9-MBURI&(lDoW508jvl!B@%Qo%t-7eK43<`(X_tu$J-Rra2pu3Ozi4 zT}8XG7JB4ohN2t5EnJziezpMxVN&w>;+Gvm>=P6zch*jMwhKR`gUt$Utp@}7v^Ael zaJDZQSU!iNH#c9*t}<&VN2k5_OSbww1cBfOkg?ugPOM7IEU_0oMM|vabbtP|da3d= z`n0q!-ha)c+SWwm!5sukOUla&YHH#(MQ>uVJiaV13ryBBIScHP0XCWXw|4cg=+Bt< zRsiM7@^FTb{A=Pja^AP~LLzi@bmsKmj=VxcL-B~;3=Z$r7MveuKSb^W!{VoNd>!QB z0shBH?lmbHvynS-j zv!?VKO5gL>_0NsX{Y%S35D^ji!S5gm_~fP=&Q02Pn6k2fY(jE!V>p63{`*6Jl=GP! z+5Pp=ruM!~gI{|D4Cc4+z-;ZM^HeBs29c9PAtqMNEg>CmSip3`xiF}bd_xRgpi)p# z1%ZS72y$IkIgRn-8U}bHx%G28gZ7xg?PeBvYO1|m3wdMyg1Zn zZddYa1YVPqJJHdTvO_l`G0!i0DmIDu5uszBKh0D+5E?)ujp6C?3+;c zePzTZ|D`%d1mL1Rj@cKpYOAG|Zu~krFJdlXh5n52_n%%;R5Ymked=voDmcAER!MYo z>3lf;OSDkgt8cn65^zRAh-{-jhdgJ=<5E4LBz4E z3oUb?=$&vsnoZ0O;B#I%|NT{rgE;cCzvsA#KrPu1|HnbAt4 zSy|bwz4vc1$X=ySI?x^jK8cP}1Z^Ok=75O4^Rhc~QqqcBCpAs!THmobF>i04>gsBH z-Oinst33kdmt2w(Pv*M*0z)eEPgS>7Tkzs!wfneF~XD zYmDD6G@#WwpSB}OO7OYnVDH$eDacfg@>J{t^gB7*b#)lhlAsdTPhb&_CQBitXq{wEy7BlWn@r`WLv=sCZB zsZ3TIBAf(v73LgQ9GhUC)z9H??>tM^w+*F>iiG@2 z$*hcnx2w<0f4VAEwk)(ba8A{E)*YRofGg zujYRYz^=$=yNP;#R7D){i-v7VnbtjrZ;>y4;3=6gFDN`6PCr?)5P41{99cCN@X^7F zB*-f%z(QPHaV7yb}scfXhs5`qrB=}i9s7`)%+4!E7b5R))R^>4Y#QEnvjyFY5g{A!=i z@*eZaTEKlp0Rb*icPP0(1s2oY!K+*V(Q0Gu?1$fxlM{Hn(kf4xOSEsReYH(6>F(~% zu>!Pu6^Vqz-b&yjUV{ffijbF={~j5cC?&=|J@ae(z+keDFykX5qeoN2-|GB+7X0K_ zWUEo9r=AIkiLz568>&&Hg4F2^&D{#oWP;vzW6ZKw4~<@MElg}|v&nfE0d9m18R>dT z0Czx?G{)t6^PMug%^}b4-@k8{_!0Dp0AyRZlj?GJ0>$l{nUrX?-__yR`q>mO@XI&! z5Q0Ey^i5@&+R$*S+q3jBO!526!VbgLgU$i%=mG69=nTovz1bExLE<*v zYa&tgf-5Mq5_mBb@X+Zi0wgiqm8q|h``yOA#3hm)TQ%5QXtgUdKuETS{gn~AJUACrw6B^>~=I=nY8fLhO^UmLZ|1<#7tV?NRndYt@vmynRiudlbYKA}+h1I@ds zdHvsxSj7O9q81T0k2l9fa_82I)K>3ixy^%t;Fw6&)4k1`tXGR6sB!VWUyxBkVlvf` zzM7>8ue{8SJEF5{LEJw%lNsN0p>#3pSk$vh-7{N;8a!LJuyhO7THc% z+7w;Ab=Ogqh0bKsK0IOzH0Vo>1pX#W$62dQzCLE99CB08-}+HU@h320lL;dY2ab+} zkN`@w>;^_(jop{4Q4uB5grGs-P2C&+n2(5z+%hj@H-~XB6_VwOd-FfeLb7{V%5h1u zXziE!Yq#pf4PZ2#@73#_);jbSPkT%7bA4})3yO;3)6*j~%YJrrkZEaYUHS;(;^Mj= z%to?XjgGe_3n&|R$ip>}cwDzWj*cn`+-=2EJtG?o0UY!|;r>}#8jkVjNBq$qPM21z z7uM?PDk?fUo5ydeIGjUBys}WYsZ9X@*xgUvzmno>duIAz)a)93dg?ry!Aq&gZNwz~ zKo8gZ1k-{cIALoSN8Doe_6%rfXhFfjv9YnBHnVnjcXJpC`D{JZ>{(e_s%mS8H8yhZ zptA$E1e_Wg8bKi;uki3F(}lW{Nw_hQY;0_b)#<2}Q-{}u9&YLO^xXMKK@Uxb-EwFj zk>*i`rmU>|g zHF&8dG_)OY^3L9!LlV zM(0_hdE1`R(kQQ-Uv(<`F)v&?Z9|zug}NGL2cC3I^hi6a@?UJlE4z-hf18JGd+q^H zVaG#4orkrnE5|*k@ZCh{?b-b|zw-eajx@$)!LGDe9#@I4Jwwh6cmDrYO~h~E!om}b z4WxTScgyx2M!&^$E?fH=HkX6_D&Hh*Y#xdGex*IbB?PjtM8ynTie6mQQDlQy0k@r7|*P*gSHIO%H8&^$=CbU+g-`fzbvI?&&rjS zqsKpv=i6DGS8ffx3Z&z?j*MZk;Tq7>!~@+Wq7vF=d!h2|&8kkc{tjGI-|KhmN2ppC zO!;S1GW|es?$?H+{II==^dHmsI+xwV&f$^Ay~U18ZDy1kr=wyEP_YjP4G(jlEp1+a{jMi@TZy9K4dM>f+jy8qWAF^$)zwuSepmFUK%j1X@6;TMrIfa~yP#!z|L#kuRP;MO zzQsi%##u|8iHQjT4xb-~S5>!<2jbvP*m)i4n1t^Ks662j6`8<`Hv|NDpkL)L9?I&R zBajcw?<>E(Kv)hPY?yNv&W!}-=7^%MGvS^KL$y=R+*zD|Klca?yjT z#IMTP<=Qju55i2or&z|z^Q@%_oBaa=1OMV*mo-6FMIQmo`l0@yXyN|!2P>|lcDcb4`xeim zp+j2niCdpI&+D%Y-88Yh*ha=ZaJNZJ_k*MkEba6@hj}0h?2M5o4!n(3BV^ySfwOqN zLeKw_wn+R;3I!nK|IW&uMIEpO;Okt`FhI-pyUyb4CT`Dr@!Y z86@+2(gdo<%;>b(>QaKl{y*}^2{c(L@+6VW7*W{?A8x5?1j`w(1UIlQ>t0+}7k2UO zisuw@gB=TGvzkmcNFgD?7cwfCUUsmOMr{^uE>)*$=f*$T(qF|00pd6CA*0D3OHW1i zA`b5byq%ZDOSAQuG2pt4DCjR@LJX^li`QYz7fme&!W!gvJcKrcLAk-(b_8@Rd(0U;J2oS=YX%7m`DCVl8yoLi8^R(Y zu#=e#;`mlbmy5`~Ry>j!GL@I|ZV~)9ogcGT?2<2fb~KPK)2!S7!A&mcJgW?%sy`yE zgikR2^&}qBE0Vua2n$1>zg2(<&VIrv8+@M85%VQ^5m5AWz-6u{DPlHP(QqWarGRI- zT$1o;Cyn+y&@wTbKkP?NULkVNHVY0Ap!Y+|)ajBP6gAx_Io-M7!#fVO1HS``n`OHr z-$9=T;m|U@gS(Ucoj-SO5by(nH!n=Py1u;F^MhF)3LA`dHQ2&nFmES~r;>dZKhhf{ zG}Hn8KfYzE1s?axLvyH*h~BEd1MNs6)wCHdQ%S|)inGF*yv+o+@6YHL>Ld+shinrU zCS~R-{RalxMJ7Ly9#QiBtz62u#wC^EE2X5ld1BCd-DhvJ72H{##CZG51i?G72{H7I z_zlzdQBJ9%8y?$ko?DHZ1;taT^8K&#pS*yo(Ki|o+s9G9lGabbUFZ-n31pk#l@+%nzA-3W~YZ)Sc>ax%07_(yvWY?8P1 ze$q7RkBijPu(C$tt+{scZ(HBhw2zJY1!0 zruQ=8FxXF`V4sc~ETHS)@3~MPPa5X7#!e8ANNb#k3P89+Q zXOe7fLvN9gD3D|&MAflDu`p&K^aiOey%7W?8!)tBA+#o+__7i4W>xnyVf^43iZX}v zB@Z`EI`CEOpl9{#?^mvFTQ`8$zQ!!VJ!?)_d+7HE#QTEP#W{T$e`M@rSj1x=G<&p` zU!y~)SmK=cAr;Y|EGr13#EtFDLg2=d%7Et=h+DSLk?@*>MX1rr^q9HFw`L6(4k24c zOR-YM34YJNKrZvc2jaj@VQLqioaYe!K0t+F=6m3~9;X9er_cBTRg=Q8ajTh+K5M(L zSBNC_lZ*6K$glk&=H1nHe#4)@6UPdp5`L47asP6CtncZsXy*=6dECj@-hwXODs!U6 zg5ckFsgcDFBjGQB| z`^<$44y51nw)?JF+mrS0Cu3yBULp?w&6koH8&9>H&)4D*N-k(ID^O*T-kNzR`Ae;f zA@UY+m@q8ia$cK_jV&xPvd?Qz&YLU*?j4jf5MMCS4-Vo>tunX5$H}8*pbA;NAo}5w zkkF@h$iPzdU&)%EthNJ$&!yh{w5ZK1ji|P4tzK~(TmS`oCfCgl$;zizgf>3& zqllQYb57AaQv{Kz57|5RD=JX1buM~n{~$qZ1wI$p;Q(xE%5qB&C7>S{I&w8O<1Gh8 zYMo=EDYR;{hrUOzy7sF%Uqkh8j(zp*%PIWEj3*vGM4s??%8r;|MZLTGWXfWEYKwUM zGK7TVg z0A0dSK$W)aMxo;F&=vk||3t1797C9!erQ^j9fa43^x8m4MNCi&;{RVV`4w@?viAd!npAmJp+6QUtn1u#88p*=viFjrMijJzrC$tKXw%q z4Zck?s3-{pM<|f^lY{hSvubm4fj)4@?v!p;JU+pUe%#@O)Sb!n3p#{Xv;X{Lz3&=N zb8HQG;59@TGvXknavHWFpnh+d?g)@@u96^c@yU&Mj1U(@V05UjAo#muMGqMh`}xKL z4fSM+6=18Vp;{}#YjdJLipOrHEB(db?nU;8dia@9?i_2iGAbUVU1n^W67YjgsOnt( zpbahAwQlbuETiA-LOKXU%|!`exizIW;&y+G!Q!#rnThk!Gx?=T6OhPU%Li zaKOPocC8GtD59mhf*6jDr5PC94doiw(CuK{^f;%Cp4cU0W=xjv9AEoh{$pfr&lk!) zxeNaZ3Q(GelOM#OSIBBVc7<=y@-RJ?6i1)&uB$U^G@=YRbFN)4(=rnvr%E^E zwjw}(I8!b-Xk)pZ!QDE1&uBFkA_f+n+@djue14Y^OXN z3hzx-V1SvC3|=>>eVhtTS|+9)oE!KTU!!Ktq?s};V5ks6O!zlD@;HOxM}d(fdgYfd zljn25;JUUV)fw*bq-*nKCIj3azUT8GMGkau3>GnO9FhO+%er8(tLM?0`vmM0S`9J{ zlzyfhO~9I#zEcx)WqrfUJ?$eXsx^u@$I$BJ;(u+ccn;%pcrPMX=wGYXm;F|{?VwSmez_`z6gY?|03 z<-OWXj6}TJ9ib$6e=&XguJ`(o5?q8rm_F0h3UEv~aASCQ0)KNSWo)kmPXDLcuu5NxwiC z_{T6K8&J*}geL0I}FQS=X5CTV~A#`TN~HDnrJp zp3U!U?C#IB{I#|;RD7DD^ndywl@t>ok5(_znRx9!rG789n_j~=> zx)smT#|Hd$_R`3+PVp#R_N1Rs1lT53F*W9mU* zQ7fcSq>Na49xeW~Wo&m?YAETwnH_)2?U*sHdw=5==24+phP&3sXYD|ak00=S)%Qe@ zcD}{?Y(w*|;{Ns)Gchr-b8mCMGxx{;`(T|~)198k@N}MR4p<=(z~wa3*fB)(^3|1x z6sKh^21Y~F%ibF#BX%SMsYAD>>n4{?)Oy{KN`qE)VJ(dJt_jGMN1fVp4L?Y@mAtJ) zKP)vI#XtE}@j69K#ahu2c<}gVgn%Y_yl9DEK#Y2r4yDqd{ z!=_4u^8Tb(+?<`^0yVX@$U$9QBHQy?|GQ1MkuFQf#a1)|6y7B>w@tpMlZ($gzo)|* zt(0EV+1V9yrR%gD(Jy=@@3|K>$856p(QoX?eIJ?eo&_*Y67NV2czfdS5}cgfe9g4) zw7@4uD8M>k;=y9_8J?NRO&_fH{-L*#Yx!iqsWCZdkNHK|tXkESE@krq$%k_522J6h!)KY1q!^3q; zp5S)YkR^Zr{{8og*P5b)M6c7v?byi3>nJk8!30`0bH-?}AvxzG4Ubj0)d`8H<^0sR z0wh;nkn+txywRhlcn#l-e}aXe9Jz-=xxkjETJjS0UkjfLm0FQf{SxFkNu|MkfMaI9 z_hEJaAxB$VTfyG`zHO_6R)y||GIDUzYmgMZUH^s?fY*=siiVAvsYD~+9`O-wBz|V} zKL;Xtju(t^(!m`4+5y4=;OzGG{EhN8yNo`%K4RTo<3ou?;^pNvGDS&&OvCzEzt99`8_=R_sB>js5-I-Gzuvq1_q?b z%tn7qtA9DI3GIxe12jX`DJdx*QPI$lU%q}VDJS<7k48!T12y$iSByaWAr^~4{25RX zf`$B{&Ufb)NOE#==GbEGaOlC4t`t@?85x;h*e$o9u7Tv#;c7bx5^qgx+5rs>jr>9H zXWpysG_jLTNT-*Vy~ZrRJdbo|rc2b&c%6{a zlTCVnkmseT>{d?$0s>MLsF7@KZOs>)`hfeIk8pbUw~fyKJrJ4q0H~BNoyc2!eI{m> zq@Rj?pVni5Z4Zsqz%dc$yXM_9ce>Y+gnoQ_8UsXXoRS)eFK|Q{WdNy{-c4mEpI~q*%TPx7RmJoaYyI*&o`8^7<&{LEBdHr?46^x} zK84Q=eM9u~MlTjpC|a&&r9Lf~VEfj3(m{emKtM1!G<0@$7TW-p#PqHKYvh4ob`jK3 zIZ(fQzJW{HOc#HetZDbX+1TEeR8e_Z5gSZpX_T0dpkiR)Z=kbq zi*^0tLBqtsRR+J;i$LyG@19)bRFXX!Dk_VOU=p!b&#}B%M5ROp z>xl+6UPnjA+$>S#i&iY$E0iZskepp>j&;p8>yyGZ*j$>Girj7$W3=Dk;NbZA`~OU5 z&YuXQ!1Vt7`Q440O!YHlWMp+Mt$fvzO8SU=C$ZOvqoF+D)=Baa8B|KV{dN@237Dx} z`<@CtT&f-Lr9Oc1DgT=YG%m*=X|nEx1yD{#k-`y!Xa7ZIuWce2*NP(+l(9Mj+^?=p z%w%y5+Wk|AUrCJ>-gE?{Ev=O;6;x&aQJQLC0H@qGx11jaVZ6P*yay2&gkCEU3eMDl ze>(7X${@yp{R6`j|9?IF*mOTd{#INjy3;@d@%^6IO$k4oeMHKl6F6}84;&V-;uowI zXa+_%v#UHUw%=H_Cg*=sM#2%wDz~k?7}IJspAXs1}A+@^b9dqMVbe8OaKrTlvbzEu5ow3yc!KNnwW#pSO2tj@~D_&Go zRL(+zne}#aldWD(U|P$9!;n7R&Kkw%56U%J}fM($C;{ly}+k@DO`N~t#LNc zL_Td;km6e4@|cmv>>sI&7+8sQ0t<9yfEu(MYILQGQcX zN=(el<>h4-;z$sM`PDC^EKaYl|5$Tu?CeO%$YA#M_3gUzfq->-b=B9?(_>SzL?19UPR&FBcQBQXk60(IowK z4a}&-{!t6I0-3@`_yQ$z8~piD*e>~)lK2))Q)arTN7deito2d0bgSfdttwZFgO1+s z61AeBz(6G0&EBOYAieu$xo5baOq@U<@NBam<Uv!`R!~ z3knU*pRrx2vx#TuH*<8X#1AItaQ_I}ghcV35QR)WAW>92^vP@(0FK$~(kNw!RL$WL z6U#X|G7(2|{;ixl_(>2bmH&>LJ9&Iu<4r}pX7 z7peT%{Q^#04|+Pff^#0%Y^%`>+Tt18y`9aCz6eaZ*G!I%>ZuCF>6NUu^@~u{@=8Wu z=H5>Lm{RQ8kITf0gl6_vnl z5>VDGN05*}n+6WNm;)uOC`HV*d00o4cMy4WZxUdKXHWffOF+r^kf_h3reG4miH|s< zWq2#+d9AIKoize~z?M}$fu^4c3$_FF_czR2mwOB5R?$CyIa^0?f=EsCgG?~3aV;P{ zl+0(h5RTDy`@Sy_62bhwSRMb(o4A;mF3^G!3Hopx%vQ8MR+KqG5FyW5%+SA~B3lms z8g&~1q<4+_3l&e{_p^Jl@jMUbL!CqjqXtIVnvSYPw4QsD zxpxiumwlsujG(8`!>mRiyLvsZnoH0vq2s?KRx==pqPMPb9@S@(C4D4;N<$8rS=x3L zvsy?(u=Y-uor9GHJ<8@u3Wz;m`3xwUAcui6UZ%wihnO;uDz*K&QJ`je(J|)rbHCTJ z!;0;u;X=A-s@mtu)^aTC@gq7qI+y!12Mt$OK7xWi+5n3DQlnEpxc`AxQeI|zb0r+0 z;|rEC>{<0+7u3}yoS(abu}eXqif)?Ow^$HjRWWv7zkZDb5-K4>mDO!$GQv9iUuSLW z!Br!;xydL?g}$Yv5Q3Gf1v{Z5{ANzHrk(NzE$+x&V`IusPs0|tP1)-}Q7#bzOC%s; zKsIDNSDcYJ^Vkx~{)&s;;?5jt&tJr<|6mQ1b*dChKY`#XCNBPAL_GAx0_S&kj=To# zHE#N3O7QCmJA#82;wN<#=x<#fEhTUEN8`PHtMFL7bh5o29371V4yX=#YG@>iUplB& zjaahV))RxiVe98#T-_CAWp>p7e5AOt^3T{9&M&Tq=U7;=`=FB+lbj4u5!3@Q2@4y$ zXKXC`abZG284HV_btfbIoAy{*BU&n-%Rc@LgqmV^3(c-ARont4bl4CU8e-g+rN@Wx zs^)-VHNEv&*jU++O*MSPx*XlA>;V+QzSeoE{)MqbdXz6R=NI?DJIwDvA#YF`cK}UI z0hVWfZG7tWI~|r#x+?CnuAG$Ky?g-+fi=>DJSiOJ_8wWYV&fOZI-bwwCUCS^ ze@V(6wP`m8I;TItf0*~At>;(a$pErlOmQ&uxkD8xq7Z|;H!h|tcA>Vq+%S@sH}y{; zvNJI;@!LFr6bBG~*4>TYfe`wq*C1m0K2aEUx^#;87iuzy|CB~4C>T4psi{vFWkf6N zG9+LtUYkM1j|76aEoBG^<|Os^^1gGZ1lGAm5nglKb=n9^d`ogV$>uAI9^9Ow#7XOyl-euwieV^1C9;_ti<8^DT0%4qJcQY@;ed=I>gX^fQD$ z=MvyFsDK(JOS$^}0+cRy9w_l@I}JPMDv5y(?oC4(#Ftvl0~B$RXr-d~#e?u{H>#_v ztK!VepTY%WQAb!^zO72EM~(;CqhQdz*Z?@lD=Ce7(55kp!kCss#)7d4nhuHOXTFcL zVbzsYI;R-AfvV)~w#izmWWVEjGN9k&EUHVBG!T1_J*$vTDIN98et~T!Pcj0vLetlP zy$w_oR_Aq*XXq%=LeOH{i9AU$35g*5m#%dIptC~w;z`Wyv}GZT@mYl?eMAQ%02#|p zuE`wD7FGt0Spht|H!ve3Y>j#LW@PXKjsN}i_T}Exqi%uG?!nIXAA7FN{e8L-&_VgP zzc1(S-+s7Am&lo9ql;C-m zzXR1BZ*zez;y{k{5pN$K-4oHa_J8B=1Ox@ENv;-fp(FD^XXgN7*V?o5EX2Lzf$_Ez zKm?3t3CbI|b40d!nX#p&a90Jx*Mim#&N|n2V4badura4C7>={3mH+q#gB$lQ_>{=K zb;;Pj>qB)JuMkO;_!fIM&z?TZlb04=Z1Od(yr3#62#YD4fRNc)jR--hPR<=(uX}#1 zEZrKoo(14hpl7u4Z~xEtbGBiRtU8w)V;^ZABmLg)$ycGf?Ki`S1V26nahr-nfRB zKZv#8et|qc5K~Iyt~%iE3FX~X+``vE$xHn_ssMOfkvp~DXPgdROda34N zDM@N3mEHR$YdHIl$L0|87>~q>CCo;j8;-1=Ij^AW?}a2MFHg(Jh*sXsZ3RiXL7>gX zm)*VsLq1hEZkNxXa8Kha!!jt-&{h@J78h=fkwEEI&^@+(bd55|c${+#@Fb)$+R|#l z(C**WoDo=%Ez_b~F*}Ma{ci)Te*!6qz{>)8zviYU8Rf1ha$%;C2viIVvuf?)iVBaE zfX|VvrbXB5B2r+ATc0!vAw+wzQ-WX{Vr;>sRpd( zd+Oxm#OHO)Fw>}8AyuI%4{vR0k+ZPFI?`VhCzZeremC!|2fxAWzy=s{%IeW=Kq=)1 zukD)y+yb27jZOd|kAnI%E~v$Qeakfnua!hBb1pQS;bmEtg64qF&9!x%om-uhm+2S2 z7l_k;J#U5lQa~(_S@SQ0gY|uJsh=z0Csc%!`bKRva`@P9mXaehNb% zfp(exF8k*F$knthr*D*pISf0K=r$!O<@!xSJ5NRuYBmzJQbzIQo_lY9Kf85Iy=)QB z^v-2ar2uRqn-?}k4LfinWZ5!lz50g!{JoG+78r%`lVLfXZw=738!G$xwN1mAXlO8m zg@qSwRITmp3vzS6SV;k1`I*$gT4Y2LN>fuz;MNpXSAU|o&no{v#RRq++{Rrl1|LlY_z+LAD{SCZ9RRfS^2tXAhF;Lik&JkQrPt`#&g8sh z{m`3?U2uc3*iIP{;AZH5rP0cEv``y*0U1-%)|Qc!M8kf=UxuU!-Cxmm zuY8_jWAg%V0k9s{VyVGFU0oe4gP;=D9Zci2QwQru!AiOC@bXS}>!;7|k|vtntdRHs zuVaNwCn6>$ra(@#7VvcgdacSjYl);Cs4=M}Aw?rc#GgM>dx?5!7LBVQUgM&EfkJ&i zmdx43r5kiwb7^0ay?)&{acEvbdsrYF{}xX2vU6%}EjxeVvAR%p+ttgfzppPiEsc2p z;NYigJ!&7|``@MJkLBiI!TIAa(rpAIM$U3(=D_3uE$dt@Jnjp6_weI8T&ql#emd@n zE^vq4{iAOK3`XQC)U~OVt3p36oO+Tawaz?Uw)5M+mx9xw^5}BISLS1K;7^_&-B?Xy@~bz<$tu0N*v4e)A^Bdq?*X z^+PjIhlU2jqNA-A>ue@##<$$w!fo(SLIj2%Zld2oBDo7ZrV14)LD4*~VUzwV4}E|3 z8V86ScX*%94av43Gt0u2TSuL*Mc9 z>*-Qs)LP!TfUjNj2dY9nNECuQ!hpd+Ih&5z7)mrl(h_Dc zv<(?3yiojvVQk%s5A}NcrTRS%NLiLdf0W*UKtMhU`%kz4*xxmX}mP>@|Q7 z$@>T1Kc35?*}`7#Sg zzSp~5Vvr{np|}PzQC^q8Z|6||9RXGhag`}&@42`KhTW)nK2ukKmf9*#tWX$b!T~uFRA5&4NzhB8@82r-=>>|A&6Zi|# zPNbz?r#baw`K$d^HWq!sGDF*4o(ZjjzSlDSnudmCAo3*ddvE@UoV0p|{tZ6}wEtj< ze1kSHmL)jp6;ZBT{S{oD{Ho2=GIQ5j@ffj z&Q4^UQMcAKBs9B0N`+vj;$Vhm{NM`Yk}%c?Rw=pY;$YRv;}?}eThabs=Zj_hjJ%_H z-F9;34rpm<{{cNX!sf@z&5U%R6+#q|;d7LK(%`g~U&1ane5Ci5RF^qw!VIe*>)qep z3V6q~wD9>{?MrSgm0@9H<+?7C@6A<_$I~c#-kunPhPE`|0s4veC^{%O=;htD?c-Df zgG_ZY*8hjBzktfB`QCtG1O${20STp~1qr2FKmq9#>F)042na}nbfc7XcS#FKOSgb@ zcirb5p5OOh>wDMBV!^r3%zfs>o|!$@b?trFly*KTDj)%mtZ1gv^bxQG{pkv0MlcOR zos)ss&$1JCkBs}{-)C&j)jNi6iTpt?86)Z+_5zjqRX&NGq*Us6piPwOM%FS%y_vCMRc9Ml;K%zd6u)&{sORg+5fhD%(D9Q;cCt`()! za{$$Lb=^N?PvN$;QPiH=3SG2?3h8qLX17pq#%kaFF0nE*`)Tz0JvT3)3aZS<&_I~Q z9n5CNVKrURwcP55 zhl?&chw#~L>+bWc_NJypZiJ8i!o@35TbS!)>>@_d(!g5;66&7OSeUC*tr4cQwV5k; zJuy+yLYWb!fq%<^I61TJXgW0f?7p&3)Set>M*}8x<>0nFwGU>O*H0h4z@TlZp((uE z)KS;>zG|_YWQoi26Rx=md?=WJDP32(Xs#vqGV3<|eCq74-QKpV2A8*HCsK??@xS6r zj|FvwUVaFZ(cQ8oeaN-%SwPL&aa#K1W~id61bQ0~9c&DLL%AahJ39P#pS9BD205?R zr}4WY54#@V*4W;BbzC2`2M{}-)5aSGg($I;>U452=jQ{#{sRmQJs5EtM#`NIpe8WD zNSc{3Q1^tJLZhyzsHjT-Emu*AmD=81hH$+fH|ww(Cj##UEVPMV8({!t+&W;8X)DCg zk*KJsjQ9~<`w=_CzOIYj2|)bHZuAQm)GT4j$og1gm87kZ<38MV=3F^+!@UiV`Zm3? zG0PHW`u=!ke87f&{@3u=Ntr8NEJy?k3#+OTKuZaC3u0$yPCrUOXhGq5dGuiQpp<-e zXE6~TjPzTYFA24@wQ0S<(+7YrhqjJRL}4M5oSYoaIFY@B0|@;@0SpsBZ~z20Dys+J zE+=*)?x!*Sk6RmoQ~CF=!REgnE3UEOVam9nXli}NyU?K8@Bc+W{4Wlo^kUHgwq;VY z+JtIKRgSwCS?l=u$7Wlx#W*y$2(-HhM(%}keNqF;)ibO_Zf+aZ=IgyiKb=x)PVSWa z=hpXl6m`T!oH?0XeW*1_7Lsjm4X^*A3;nF-sBA4gTuQrt6p6-dJ4*W=4p7hY9m5^> zxS~XJ!~0y%?#ZF)=w11?{!Y0taLRr>2=#sSJq3(;L5=Mq3zF5xQ(kZMM{Q;tU*n9e z5lL}z?*L>8_ACPwA|l@O=!B$TV0-d`j)m!H1cl*h-Qmr;FnljlHic_vsvPB0^h)>f zZb@3*CD(nFInvojQ=mJmTB?;2T5NBFph8+IDrC^-7rf844Gax|{9S(o8va&60fY5! zL9u4-L+`7TW$@^YfnHz^Jnq$h|Gq{?`!*I9im|s^Jx-Yb)+e`hG6T@UaB(rfX_0=N ze16t8u0>(zmbb!fa5tuui#dJrML|bq19QxDv+XF6(8UtUI#4l$QeuEr8ZnZ88|6#Q zn&02r=s&IXCqRWJ1Ie^soOiajLr2VF#jkM}QBY8f-+L3DdV71DTUpVtu_-)7o*f^L z^YcSiKYce*q@I;547C7|1vleuLqmfD=mPl2xf#Wxq$M^l)J~cM- z1Gk&YdIlE{PZZ2t;0FvGd{tN>@Q43jz~%pq7XNv{){AAObC=;#xO!j2`=<+}WFC`! z`Lbizs5@prMa8cdvhfq_3^c34K(0W`7^KH0`Zu`KX1KBhnByjZRQS`=f2N9W! zA58Hi@>im-#{~9|q8(075KSMd`yBv+a8x0huDRm%=&#?7Rz3T|kc3G(yE=)vi}A&J zq4r&+m)D3pd-$~NC;u125x~`8_T6jPW&vV?=@#$C6A}qF_bV*b>go0lcGG1*5zEM6 zadL8ka8Tx={QT#1bZEfWCQs)L<;(KDvlRyp{}f)&8b&Uz_^>c6pSjvdZGIQYHu~AY z-Zk+oXe8?E*Sl!BMwgwX9`Ea4zkX4Inn{(W{ZBEH1l(T(DvuZo?FBUh3(MfLx6V9P z`E*Wk%kI&H(b7-f;+n;pw-OSVNXoe~`aeJ2tJp49uN1#arErITV+!eUw@ZqM+yi)d zU0od;gz(ZINan=3CMyB8j5(f;SX4uxK=Q?8;fG=+U(WlpV0r*(fuSL_yx?i9*y+0u zMIXQ6Nh|{RDp4l)L*r!?vp;yy0CfN;z0@r`2M5RS)D(j>3Bmur|M_1aAWa6VSPGIqm4}S`KoG>7bkBdHSQE! zCS6F3i!~%P^zit&V|J3rR#!K_H3v8gRmt%84`7^A!2#Vj==Ao)5zwoP6Arv)klo)sSYd!5Mw@s+i6{vE;Q5(E2 z9n_g}pq7>eK88Tq?zF7H>*gm`)twH1`gtybzx);cn)|m^Fa#*pL*U~7lo&k4K(n(8 zlQ~cNtSv=4J;2fbTubrHN2Z%#5ckGO~ZV*$9y$^(eFluv-?H)XaIV3gCUcX;<#1cuZbc7EEv;T6L8FC$Np(_()P-CBj=0b`vmV_6VNOiGf7` z5a!itE`XCaZ%)N}%7O8-gdF5NpalYCu^v-MWH2_abh6^b+1lb5A4~uZLja@oT>M$}={m4!SzZHamY$g|KcKMy(N~ z$0AwZ(Sn2D%Q!S22CiB-;A7JfeQDiRwRO=*ilPLn{$YF=Hnl^5C{_Cq54I8bh zFV@gys1lsR>UA&5Ptn50GeaJTuqcg1WfR#%UQiV4NP}!pc3OdX%gHGJ|53v=^(*+X963Eu$dvJYlS zkpAyz-g#rZ-+g?V<9|Ip>WZJXn$U9OsmQhRAGc7oK2M1rzJ;=x8(?R+LpTUNXVsPC zNXfA+OXYZ4zf;j4p-~#w0+o?cW3l-AwzS>L6w2g=QUdmU)Yu22H>T^N zT^HQM%Ad1@ymjFH*z^%!uo?-y2vg^R1>%(yUp^7DAnx%v1snoX{no4?BGE(T3l z29!2FOKAJ#eQ^Bud_^GQ=i)2$%sp5y3qY< zsI>cfnk&c1-p0lf^i`T=+5eFcWt-evte&D zhJuFHsbhNYynJKycKqO8qwl4qk-%=rVtPM=C+B)VQ$$OBUsKKq>7UVdhRne7m+x+( zyFZGGXrd*f223!OTIOxI#j_r#4CHR%gk93ayk}%$;(dVTzv{rdX26srV^FQ}iWtjH zfV`ohisDQ8v{l`_&0EFJ{qu}r^QhN;lu>edFPNCba8cWr%W{cgG*daC0mGb1>Ba!b zdsiD>7VL)hDIx^HmoclKQ*)E4M_5nrWYFzm)kSb61IB1#%m+?z$Vr37HNZkwgkWsd z;Z@Fpo*gBIi3}Z4uTdl2)%AH~`*Px&*VEWWzf7{EnnyNJWj+=Q8I+?WZ}dC4Ub7_? zu%-0-lJ*+mfB!M?0}dL2#+2XNmf{yy-(!oCJOA42hUUN06^##F1PtpuS{_O>;u5+Kr60( zpm=2%+u+{sNOan*CLkhWcRw-;6Q{Pew%!5q+$>$Uu;1&DV7JP{&v;b5FFz}bo!W4J z3|BD1H`|${!-O$=&l5FX3_m4!zph8gtFmA1H;q(H?(5o6m3H6mUYbmmNcgh~s+}V- zI2gWMuN0;4GEdY(6TdgpUMAm|0U^=xkiLCQGWuQeCHF~+nhlpBA*vP~{_az4|F@Ou zpwNjv#t04ScW53n>qNaM`ha6rhg&Zb-S(z_S_a2ViY{{dYCmz0G@*3S4zI<5ell>n z(litaAfsLD$7F|1sSh|j&#dg{8=MPf>9(QNm8xNi2bb)P^LvpzO5R2TS(jq6XDx8c zMsnvnE#ax^qFx8(q$PFA18&}46PfKdQB71Hk%?#R4!j}ZEFH&N7!KDCzb zo38Q`fM_vZXmY>LW!}qF+C+uehY_sd;o)HVWb_Rjf)K}dPr~FkF;L5Oun$23)E4E` zsYR{!E8<|vu#Ld{1x`J(f=1hw@3sn_78|q=Yi$XC!W#~rNS}2G_4bzaMoo<*)eSVldqe?9sy}| zAXnLR1(RR*U(zKE5J+ex3nK4GLv(;>p1NQzP;A1vLSy2eILcbl7w zLkj+nC+|=1T}6B~pr5q-CX9EP;Xa!EUdz7g$=@)NnZ2LrY=+%fhapTQxb(8gPAbrk z-m})5cd3p8oLXLoU124qrt6LS$PCk5M_(of!P3mhTaZZC>y=|kec&zx=0Ha4auD`x zkGQ$)oAY#UDK26X?mJyi_hbQpp((&Ck}s)nF%E8yhsGu*#5FaaRhkSK0DWhwL*EOj zPm-AFZhs#f#wyF*X+D1^b4rguAZjzN>#}MoPEF_W`tPJH)C^$RnCS^9qM#oD&m>4q z$Nk+nSJWxD%^Y;`t;c$9jx4fJ8}nfh90qGa&pEne5ZkK$o@L6VT`pKQ2yC@0vr?Q6H038mZfOOx|}H#Zz}4p}Kz>0^|UUAo4O{CPI!|Gx|_9v#kVB zDTGH~ifl3QG6TX#Kzb|ZP$vq%CWpCek|mLj_Ao+T_^jx_K3zHVe(i789oVMv2;v}R z<#8D(&G_?&b&{n?<7FYkaw~Lou=p9ah0g}Qx8}*mxFo21&SFI$+r~eHJQC}f7I1|I z9W4(3rLn&)X;5PnaAl2=4osgNN534>zR0|~x-4q84s;86lqx(7eOOBF~%&Nv}7C_D8^ZyhNmLJQGaUU1;90 zZHJ}zAe9}V8(+HJ^r01Y(~wDlBevRw#xQuGvAaQkgvx%c`TSt^neD%Z@MoNr%ZEwq zU5-#w7)7y1;w4m`s03$sw6!v~B-OS+k-1l|p}I4T^5ti`c@3jM)jq%9-{R1uJnK3u zu}LPsxKAW}TeSzx!^z*Sbw$rx_h5i}Qz)awk{+m+>G{?f_2RuE4Arlljl@9B?`m>C zew)xA(7)Ece!P5qS+^YctdoDgNx2DZynU1JTCY_A&Azf-5CC$JzYg`lzsd%QI?Ol< zZdBFOl-1RP!8bRZEGBR&m|YsvKECY!N-Nz7=*lk+%^#Afr;+Ff;ZW%8Nx6}q|JMgN zTc&@MgtOuS_#1p~4VTneB{>;VPA16Mkv@)65^F75@Gt$A7)Wv|Q&({ha#XlXu`@=& zhS;|bISG_M>?>+Rb`n@=9f{d|6Qvz?w=$Vk{8(iySvz;9`+88 zhZJYP>LV~Nd#M*PNv{LI#h2;v0nkZ?qcrK;3H;yZHsst`9JFkei3}}dAV)P`ZV&MC z4kU2;3bzQM5VC0f0usw4t?w-eJ59PNJza%|H%(rR**Q6PjX_Ob*I2KvDA+r_MH2PK z1_Lb#A^EDf34NyG4mF6d<*Kr7yQHy`_WU-(ZBpCyeJkvLS~J=}jjUv`!7nYo%uF$pHl<<4~fBg5}UjqXX;X7+>ve|s}wqA#6 zAR4klsskTD1Hz2mem-+uUCA>CAmAw&*4WK%E`0WB>QpV{h~kZ>8aLRpTECt?)*09> zZ2JVRp6M--dk8xw?~L#t}k^LGa|s@}V0Bn*V3f z=YJ3D3X<3y4)Q^~NTv`6+b0GLjPJkJ4fbDOJ^Km&gzX5wDSVNn`5r=6;bU(8BBuWb z7ZGm^=9VLC{RWSe7W+vOTyKBTlbAp$m{ZEWQ&#G>t=2P~ft zL+g_qnD1-8Rb_{DzIiwj51RS-GPeNR;lTXx-OpzKU9VE#l;l#w=w*BI0qq|3Aac_y zv3<#*TQkO44?WX2XRQcZwwFsBUg^{8?``pZHJ+3;ell1&I zm6uXArbZvmy0lAo5!q+0TQAHJO@Nl6n&tLj8}bKoD@TaQ$g;IJqVq${=o#Hysfr4= z`-@VRxxO08`1{y(3@j9Vl3V+`G>^>`X{jY9O3%iTaXI5rmVTcx_WW{o@b+{qv;d9S z6A`U2JQY)Sr$sEV7<>~C8Jj0=#^$K5woDIj8u+^(jLkW2gr2;?eH~FoJGTgxHelZk za)(x$e#H--QHJw8qVSFHKeD%o=+3aZ_2OTRw*54)h_LZR#NbGXn0z9fD>I8`uv~*o zNSKALdu`yD;tboMyJ7Hu>*PRKSP=|?VGjaCKNf!gOTo>(Jvv;Br9(FcMn)x0d^+I^ z0xYx#*jU4Jf8LtuL7#jTzL;_JyfKH#m96pn{~UtCb@~Rh_U9PID%@`_BW$)y5E|4oK&6Q8)-+T zJgn3Xbj`CPxWIMPzAm(2B<`bD?#ke=-bwlJheW8!N?Gll&ENd^>UEfbS*@aHc(}R@ z--t6|6HTm~dXP+!P10Oj)?w4)lVa^efIa4QW$FL8H8$s`MP$7>BgV7~OhnhvGk_Te zM_@r|o*wU=j6mP&>`?S;qa+t2Q8_*8$+7qX$L{dZPq#)(KeIQU+O&^g z0(+t`M|dvYZ%Nq}7fQ*f*iy3MdRE@@nQmIQ!`jYcr}GML%8IM6K>D!u^1&(Ei=#UG zSRR#u&wY=Ctjz;b2(^d0h|-5-2PQ}U%nU*$k23SC({>F@4VN7kO_$qirzcRxn0{LF zBEnL=yc6!fxZwEGkBp|zb`cxY|2-Xyn@9fgtk!;xr#H0b^q?K7PjnrRO2kcK3M%Qkw*mgo#oe6oKjymPC$xw%J0yqS~N7&_McxC|0( zqbT+Kj98Eh>6g$irq>m=c*%;v@h*JrZRhv@yUzru88_$~HVbmbw**=&M7=+s z|JSM>Q!zCO4~?<^r2Mx=cYYuEUSA)RJwdplApX|fMRd-hr zQNmZM?ml?YfzG?1cMct1{7x#EqTIHXoq8zV6cqWX9|oH$<3oAWxS5;2x@DKMi^ivx zrB5~>_>#PZbDxdKx=xcF)~#B$In+GHIlf)@{Pb<;rt>nPl2dreDz7+z%UILat&6%~JGr>LcKqk^Z@_ZxIAeeHuqSfYz^%?l z003M?neaVA$4i5&= zKq+ok!`-qyrS?4q0pGifmHgyqDSRR$#?E5WXS#g$3ICebAma*G#@#M3^Av_$9xadY z92n4(1vT2Ks+ZNt%#~X#zp94qZqM?rBwONchbL(k`$iEe8H`sHUA}3|z(qhAR&Px? z`NP6&Bu*n(9XjZ-DXpuc^BWWvSpJ4uH#J6#xER~={+(+`@~#jIsQd8>*Nu((?s2rG zW*q1|TNnKJPTuj89b4GAewz{3YdF_3GXFMc`<#4-dV&ldp6qN`IU(Oseg|hAoS!V) z@gPYib`T3tAm&x@{pqFKUjhjX4mu)TXq;0AafLNvN%Bx=zWg2`3At&+1tDZg=8;;c zT#91nyyZN|cfu2@3ne`Ooz2W;bF;hW-YMbS4F(`-W|EA|`nYIgDUFId?IzPXJxv;)qO`FZYb1gu>=V zu-;dj;wpLWCrf*Hs~Wh}4WXNRdj^{~i-{%KL$5?IlOAt6%4EJ`HqLGc4c!C|u!#o9 z=w<}p%2mKV^xC!a0~4Ra51pxM>4iFWgNKl!E=^*=c&`oB&KHwvawe9S#3QC_P)i3j zvcvp92Z$A}zu78!mufBjqX4*Pm){o=DW(rkn^NbrF4rO1l*XHr7$$T*cw&_eF1X11)ar7vNuAp)_V6lJSb*3E3A#&IUZSxBwNJ ztPr2q$*9>cT)O>nHb+*V*x5CU&-MLftsv}(O#4q!!V}uGS2iGj zcl-On{axl+wz--W+L%EDXUW}t+vAlJskV4Cw!wVEA)2RQhOYdeExA&EGq#A?mF}&w zsP`0_dM0%~betPKpM9-9e*S#VzgIy4?N|2ef(?prH#f5me>=%7e}`wWlhH_zppHzc(~L{A}i(NVNSo<{wPQk8;pA%`{E&sdojlA1Q++ zC@pW{_es!#{s}V^@x||ff{pXFE^_J@n?w5KSGu{ZB@u|nsSx{bn4~fHJpe2QZa8TK zPr)JTEtS|yQ=7k5JPhLVpjP;>yfne|+3yTtX*OKr>G;+97z(VQyn*baq`S)Ma`bdv zk6pBkIgx0PnSb-`W8wJ{3X~lAz5Y~K6!Zu)Ajn~mmO{YQprZdIujn)>}Z61!odN2^;`>&QmtZM zWG!GTAinIYs%g{yB3eRP;et-e_Yv#&F7_u&j21^J4irTBDui*AOWZzm%^|)ifa}TKx;{uG^8Jh5qf{e?o8(|y&Sa-`h z=kPsP1VM6JdJaEFsNb}LHck=nqa|pJo|gwNc*&tYkxd`jw)GaOIYFbt*R-&le(e_4 zW$-*ss{8^!$(}~DcB0&w$!d0jjd)`tw^8$oJ!PQj_H6dTOK8F8+B)ZDB?J?k?FYS~ zd_xzbfB1@+U2D;7M_FjUv3`tghdgY4H@@OKnklLQ$5Yi2iU@%QVp& zh!n2Wpv= z1X&4^zof(5Y|GS9mnA`PwH}#v^v>>EWfkRy)hqLcp!0e+pOMC(`IzUQCI%c28y6{sTv`f{tubkT!h*B*rOg|87o=~tb&n!L^c7N z3YYE0C)n|mSS>ChSNaC6UWpz1NH6sE=2j*kbG8y)r`U^ht^JC2PR5N#J&l+8JQzWZ zOKeN`%YI7lqwFsZX)iXUtOfO%o9RY!SbP`4hIY5jkw*=MCDt%&kMI>-oJ0jv?ZB`mK~(~U_|A;jPh0&p=k^#2` zn?W86C_l|&E7Aj51tJu${1Sf?N)^Zp+uSaHELO_EqfWzm8`vk9hOU0y=r4s^FrD!M zl6B-6KyaKIccoq?NrOj`#Qd??1dZ>JG`hM~h;>hYV#Y#GA-~JW%Kkr-CG|Xfya#)% zp7CS;7kj56uEg2Npnb=8b8vN3frmuLc|BETWVOyG)cHt( z--Z0yoB0l!`E5O?!b1YmxA+Y(tbW(2ARBo57T%wPDLjdq3QJows%CfpjE~zhRK=9P zQ#P}(5G8mwXTv>h6|cbXdEQ2X;2k-1bGSktlEQ8Z7#}K=N&sm4Pg`|ER$MVJkJ!sq z`hFg|3G84tg>$Ni^QFZf7B ziyqs>27r~?bi#}5dE5g9zIeoiTd>fRSK1O)^UuX%tMGEW(pKq@P_&Lbe*1H705$>) zs7+4~gwgj{Nwl=s%V33$$?WoS?s%`1$|N6}ukqB+HROb=aLCq-d<*draz*TLjp+5_ z&RS;I)DVVtiGr0$c>y_MZRln2W-nfBOymcV})2v)Yi^^e%g z#zjQGd<}h=d;-NN|1{%L(ohx6Z9-ArA1+CC;2j>3;7X&#f1(=Y1f1&(}W&H38 z8cfc$@nX&&g}7e&KIMDl9D|X=u?g2uVPm{JM&iNafGcpt*2PzVV*pkWl6Gs-=?}SMVn!@ z=?Uy1ShsbPy@^Wimn5O7ox~k_^(xqju)t^5#FB0M;gD&;_l%)X*CAYNeK#TQ=!Ti6 zAkj)1*=}l_TLOhQA;ReZYmlNgC8Gu98JgTkHVpMPX4uM;jb7CXx4XK%nC&oVaJPS8u zKnfs;uS}!3bH)BHuu|}B>eXy?X@;GOe#O*}A3|w~Yp+Q21N!V8>ho>|U+1INd<1S~)L;W}wt=-4#-F-4&q#?evmyVJs=!K1jH#et~k<&Qpu)j(K^X-FNVl0)ocyec= z?1(p?(&|aq31*3HU){|EZgbhFbU|qIaKQf< z8{KnQ_$w@YMj#N`1G*+1$8h^ed4iqDfbPB606USsz~C-}0yz{g5dtVNBqSSSy=hZh zhQjlK?}8Xo>h5eGsI9Ob_c}HtB*cz~G;v@ntiAW@wV|}<5N~mBSwe*z`j%2($(7EU~c6u`bJiuNvpv zr=iE!vd@r&@paY)`w^kX;uNTvAP@pnN|kfYr2=g+^)LJdMVQOgKJDQsQuX@Ba<6;a z!bqN+8t;(vkDO!owI5gD{B$^{+iTism26$=foxoq)bbDK}(iW&LM6B!rSS>M!f0V()m zQ=Yc1aW(q5~tJZy;TH2xJJT+!aJ80Z_!Luv2{$aXAm@IZ? zNgjRZr-7q_u3BLM*BftbX2O&#=nc~%8dBbT-+o1&LjK?UA)DHjL$@D4ejqJH!V8@V z-SeWx1}I3|Cbyqi!y5zo>7|KsfbP*vAl>gc`{~td)&ZDP_o*vp7B)mhx~I~Y;VdM= zLY?OS=TAcUlr}LM4$)0bpGz~_dV-hv9P=Mz#HRrRzyReJU@skCmZ{4?VAoI3N;{^b zkGdX;HuLlZ| zW4K84fVK0S_w)-nVMpDOS&kvqn*NR#CxMP3)=htA3pX+tjF>O~QByDzF5aJq4{F!p zO6v#nFx-ilgsuT^wQ>sg;Jmr-F9Ng`huLvt{4Qnsk+Js(Lc3zgMyjX?LmxkUziC`b z%5ztwR}uRpmKx1mEfoN@FLU?WGmfsiR_xEJ8t-z0a5WNDP8Y?NfA}gxhZ!;X)rzZd z!)l5>9efd2UIPeZ?pr$MclDmMF7D@5t7_OnfBS>vSE41zzwKLn%e)zk9YLz9srh?e z$bBj@fsTQCg?YmMB;cw|^2d@J^ZOj7kU>r;&dRJNH#je=s_I88leV-p=Al!piDj|` zx%+2JgvV1#?+F#D=6n>D;y(R2{!qGW_IT~CuI(Q1V%yVXlUeosw_3(z6-W#NuH;U*VLHBxER;Q zQuk@~S9F8B*zQVnnXcHMoQkcnCO2+K5|WqF=Br4Jydr#WJsdkP%lJ5}KIfEL=eF0} z#+)|p%SdcoRoFWvPxKq8Ir$vcW0RDRB+zSETHc;6(?{74$a@m2yAe%D2c~$%+iTWV zT^{0>!$eqJ_pe6Gn!t_dh0}y#HMMdOzOi6_7A0xCvG)PeY~S0n!OO?m=kS~YM_Grr z81*(9-Y^MCu00gb3>Wso<#E8qS$RZZ6w>xH9`X6;Y4yoH;Q!ORZC{@s0I(+n0ar^r zxm7b|{#(4i*b$F-+qV7Z?ZRKa#oXilI2IYwkx_kg*O49EU~q z8pUq9LM#a!6?CQvzld@irq>)^j5)tf`fV={^-d-%3hT;)SL|JVvbehZWt}XS7k7qs z_fnCfBCMbe-+7y!?b8CGTQs={SPi7&0&|%0m3A-ci^4bL*!yl-jhR}n+kAPr!fujR z(hy%uSzDo&baT7M3trxDIB&iF`Zq>^Q@VkCTJgM+*>WN(j-~T|{Kzb7lhPI|-Wsz- z`T(-u{o(whG@%z)HOOk*PViz(sz&0$AJi3!vkw$0HwaU^5FT{)!d1k?UWb{sLqEanpc#fY7^ef{!<%x4p)TW31kWIq{)%mFuhx#8n}X@YcYamL&i2c+4~?d z^>+{KjNk-oL7lsdV!*dBzM7A1YkQ&_5bJ!L(n=7Y7u$ZnU1)Xk#|XT3{uSJn(!5K_ z|1P2djfgk06A$&K8T_uY*#$f*xe5DJ`aLz6_d+F3vl0R4GjiiQj;=Q!u_LQpPzH&V z)8k1KOnEfj>6S!aC#mE@i_=m$$Fks6DoDN)yZ4PX&B*g_1y!-e)i$f=x*xXxIc`&|g)o&0JRf64LY$9C1kjV= zl++zb3DqJ-sCN|EQAE$7=XXrh_MPk^aut@Z!c6y~j+e^=Jk$q2iX@ppC%$lCJT|q4 zY+m1Mp<4xzxDC^06+}DP@nmzlyj7%m8vfUgXJdO?Id@aw_&2*K;tww8N#!(nIoG=p zS02)n^K&Nn{Pa}6{3A%9SFqI&wC6eAW1AdFGU5-Aon2j-xFM1!uHQ%odk^6JymSpa zY9i0U&vyE(%V$XDN}p#@Fo@3ZJO|&7Z%DlnXt4jC@iaHkhc792N~>Ulzvr3x?6|*U zli~;~SAqc>iOP6_{e9{3NOnC6Q%W!rNA~2`&jlW*;weRbj1lf8`uOF^Ixp=XEgNd` zNc_+)f@>|2Q=iYk>?AEo9Z3MG1uv;$O1hsygo;YrAFf)hGF}xf5HyX+rKt?V`-mlh zmLU%pZ=`(Eohu};xd-;-O55wHUS||hycf+emV^u*TUiAJzZ1KPBP=8SGoCPQA{5E$ zett~5??Y9NI^y=#IGxOE*}=E4R=aB&W%~hPqdNU>6;JWWGw$5L}0ZZCQUlIySa` zO#FY0{-iF^DyF+T(f6rj`nt`nX{0%)Q!4|@bOo2^PZ3XNIJY~o@iCU|zkPcf+kywZIkt%q<2r@s3(?w?iDSj}BL)%Z3w9 zJYc_^`O4363{S?-JukvHsmLD@73=pHgb-Sc-EBjR=l06g1a1}u={Xi~>-mCbK#p`m zNZtnxV#7VZz|f65fk9L*2|e;14<*|1j^Girqab~TaeHWN(l=^7Z1?!vg!boWP-NFX z$~lney|^)RnQGHL{9}t(y@IYuF6dStUOhhV#C(OJL*+R+ygG!3!(ljd;;`R*Zt)NH z+;3JZGxd0Yo@{<(8Vs;fk%PbKZqI8%f(b~d|0E=-gTv5qt=fu_X&$4NI|YKi1jX_d zPf(D&hkRa&zf9BjdFj%Aa<62zPVrZ*7`d;S>rB?>`_|J{nQ9{c|~2Jl5Fdf*JV zIxm1*fK?S8=;r-vU%CwXFx*%Y#%Pc#!20xCb##;~zSyh0^rtiC`B_>1V8?G0 z_SyxH!XN)+hquO|!T{jtf(a6Yy(T#vZ|L=6BoVZ>q;w_ag2qxgTh_&qqK7&EH?Pu;q&p5$e;p2tEaH-pZ#&m_M1<&eeut%BP zYUxhAch}loMX~&}FO#l@6?`uW6U1ww3g~0QG;86xUIpLd(*5pHoq~pz-$48I+0LG| zn-Kk9b5@yk38mJY^mpojE}QYYCjGl?Xh)){wB|ys9q)q*Y&AR>MCTR;9b4mt0r3$X zs0M;g)h7(6^1@sk<3)uzL2ruCQ#MqZ;bNU;4dO58W!%KCk_LF@M^zd*TYVs$v!P)mzJ48l_mJR;S&5~E?b7)dY#40 zBj`1S7jgb4ve`z!p69KbS&w+X0;RiDB7hVz#4v3_zJDweiy;IE{r8b*qC_z61D_M< zVK^W7efciQl0c1%p;!JfHb6}|p8#MB0J#VHEa0;oKWkHA%#o>Qf0{G@^T^*`!?EH< z7l;S#u7ByCe0>1n%#G)8w2pLE&~7c>1e26GHJDFBUkn^y1ZP&Ue7TvbfN`C}Xjl0% zgImI)*oO^mzjL!NzcJ*NRNf=k$n`!@{P)e6DWJ=Bp7J3tis#=^t{>k8gQ(TA^KAgW zet7Wfc5$;DkefiQqTVceyA;U~62&&Wzu#d|gHzlaD+Bq@%C)ve{;j}M64k=@CJ`a{ z5~_%&_yT3vDmJ&V*!wRx{cqSZ<071Gy+e#Z@?wg{g!8c3)0X zVNm@8oTT}_P0lZUs<@~tUB<^952{>im3IB(!^EE5ieRm7glTR{Nw)IiRB{B?T}{py zk%f0|>9P|2n=kvw5oKtb$HA;iP|U+TWBkdV133-4J?GCiGOJB17*%3ao0BKpbPZH)s*g0&*s$!YYgXc3F$)`Qug?OBDp05b zmDa)eF1!*#JhkfrsB@NtP{5;a+DO(ek}n@Dr-hMY2R-W87*V?QyPqa?d7xi+q6Ar= zls1<5$H(KaG~sG!yjj@PDJd-kpC8p7h+3Z*4+^SD9S_+Ck!=kLTuA21ogU}QD-NG& zIQ0D<0cIoBi;51I^4JM!SN@#SE>xTo<=1T@$IptTnrG^|d8V%C?xn_LS7&G$l1h2c zmXN2$gzb3meNrlYVlRq8XcuM=J+{Pp9(J#RBTj&^ojCJVkfF@u@@`yv(PVSgKXJ=< zH2G98+6qr-wu=iP?-w*f9zmDQOYo|JMIEE86$N^i$T;BZdPd9UQyc`9c@~Wxznj?; zj~>jy#nNM~z<<=mRxd+iII}0}!Xd+gzp3!hGuq#cL7XoyjZ9aNY{CkPL6+r5VKcVN zyL=%uHO)L;I?bh0%9W?qA4lQu^c@?#D1TW8|GVbi;zB zPgg1F-Y>gV-gC($F$e}$Z6m^x*}?&jG9|SwiK=1u$mDswwD@D3DxhP^YIJW@D&^vm zf5LptZFn*lKX5b}5zOn>ez%!^%7k6U)rF;su|(pm5|IGwn;nIhOn zOAfSRkQJkR@Nzs_lj=dv>4zMzDi7vUZ9`&3;Z_~#mpNYp4Z~vXjTlDkmN&B~ zE&I4WO6_JNZ$Udg+;|@vRj(vs{p1`j%}zD8W<#y0x7H^ugQw|?pH8FuTZ z+^Tq{cVyHRm@I#3ZaHRyO%vJ?`s|I2Aqz=B*Yd6Gum|%=w6lQf{kv-m?xHg1NmHsC z(;MYFcA_zookk1ol4j)0%+D1-P8(PSNK56TTYB}FE!dS+h8yZqIHO7Owga;#q8Zz=PmhvY>#_$3dY zk?~)1j6|GtC)vH{oZo*GCA;?Jq&v<-t)48a>(jmp1cF*EC*KNF^f2(hTbYmYjbIkU zXn&C6{f!a>IbSciz>)DM>bFPj$!M8KeU{SiyT*)0)nDg-nCoY96B%at5lYQ zi$q>YM^h?WSc-+|YZ!f;N8x-(8^aQ#%jj&utz^`=dDn6|bqEzon#jOugg9MX8-Jfa zB}S*8JtT{wfCLgM0@?MQYb8H4tf7~IILQNVYWrSN5-|yI0{q?hc)~lmc09ADBn@6w zRTZ20C=H;peiRmVm{i&i@~$6D8AiSWJ7uk+Kr}5D5PQ>t$POTv&TrV>=;;EfY0j_f zw+aeD+(*;#Apd_C(<4hwvPlmmNJU9u0Y~ILHd-ilVPT?PkK#Wwa{Bx!q_vgY$9pzZ z2?J3f*bJwHK}7x|pJylE?6(1Ud#GpYW!GkLfL0*lY#t*p#ty-aVf6KJNZ}BYfAGee z!hiREyb^AXRCASVoA`eSdkd&2#T)LF!Qoxe)a6VpS_t82^yRTf%lPasR=S| zsaa`$Uw3a{9Si^GDa20VgVcu`JB0_^d3OVb?&?PVqmZNb=b{n(nDXlPe&eqz0^f}d z4q8M1M^%evKSWazWd9k;62vxkaNHIbWwr3|dh$f*diDTb52hWAHg3$J(?&S4?>F$z zT3KX{<2o1$@j5LCL7;Uj;A~YTw^_b14Rk0gx8B{qsf+ulg)?swjx`J>uKlPeV{B-yYZO!zPF!s2-0A4PTin2v zR+bgXb@8#hm+|u(SFaFbN7*NN^5r$1BW}0~Z5wp`!8=k*6Vtt~Dq4-;H0JQ6;S*DQ znRPWoahj;;3@@{W{oA9$4|b6#8FIx$Jbi3xxDLBB@?J+6~ozF421t$j=%{dcZn zR!Xb-JV?7CF-n0C`&S@KGgfO$Tnd(!faI3kylb#rahZjEfBWlTa*<+PDRjm{81nGV z=*^vhOIO;`vm6`Gskizi3hImaLwvc?783eU6MIJVURd<}k?-dj4q{NLHn@4c8Uk?zGL6)P}_Ur}Ydx7B?6RuWYlN3cvj z)$Osp2p9!!jrntk+HKNxUyDCYoygopEM|*6D(y4DRZG5{XJ7xmIQF?U9rOy*%b6N0 zx-`G1L1!s}>|GXjeRe_q{XQUDi%m~f4P8V2)9qQn$;n~B3+|Skhn{M=|BUQx*kjOh zt!TNC;bk!PP$?Yki$l(AO$vD=hWG$5|;@BUSfJP@I=< z=}UcY&%eqb`FMlle0@^d@Dahi*5lDjDB3IfuZRdfV}8Y6;Z?&imZ(NKg%gH#Tyi`j zX5z2cKg1ifiZOR9$566<4W8copzf(v>$cL+HG2I6qBG)(K5A? zhL9JIEARS9I0yZ`$RbHtKk>u3S6(w>KW`RT0-zEM^#c?e6Z0$%$BB zz!ZXp78hTE>pOdouGcY2;nSdJzwybq+~kq*QZD%0DoeVN`p6cI^y?Kc*_`!ttN)&` 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%0A{YN(v9_aiL&# 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 H^{f8^`v!Ne literal 203332 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

- - - Hello world! - - - Label - - -
-``` - -Props: - -- See inherited props: [Box](#box) -- `collapsing: boolean` - Collapses table to the smallest possible size. - -### `Table.Row` - -A straight forward mapping to `` element. - -Props: - -- See inherited props: [Box](#box) - -### `Table.Cell` - -A straight forward mapping to `` element. - -Props: - -- See inherited props: [Box](#box) -- `collapsing: boolean` - Collapses table cell to the smallest possible size, -and stops any text inside from wrapping. - -### `Tabs` - -Tabs make it easy to explore and switch between different views. - -Here is an example of how you would construct a simple tabbed view: - -```jsx - - - Content for Item one. - - - Content for Item two. - - -``` - -This is a rather simple example. In the real world, you might be -constructing very complex tabbed views which can tax UI performance. -This is because your tabs are being rendered regardless of their -visibility status! - -There is a simple fix however. Tabs accept functions as children, which -will be called to retrieve content only when the tab is visible: - -```jsx - - - {() => ( - - Content for Item one. - - )} - - - {() => ( - - Content for Item two. - - )} - - -``` - -You might not always need this, but it is highly recommended to always -use this method. Notice the `key` prop on tabs - it uniquely identifies -the tab and is used for determining which tab is currently active. It can -be either explicitly provided as a `key` prop, or if omitted, it will be -implicitly derived from the tab's `label` prop. - -Props: - -- `vertical: boolean` - Use a vertical configuration, where tabs will appear -stacked on the left side of the container. -- `altSelection` - Whether the tab buttons select via standard select (color -change) or by adding a white indicator to the selected tab. -Intended for usage on interfaces where tab color has relevance. -- `children: Tab[]` - This component only accepts tabs as its children. - -### `Tabs.Tab` - -An individual tab element. Tabs function like buttons, so they inherit -a lot of `Button` props. - -Props: - -- See inherited props: [Button](#button) -- `key: string` - A unique identifier for the tab. -- `label: string` - Tab label. -- `icon: string` - Tab icon. -- `content/children: any` - Content to render inside the tab. -- `onClick: function` - Called when element is clicked. - -### `Tooltip` - -A boxy tooltip from tgui 1. It is very hacky in its current state, and -requires setting `position: relative` on the container. - -Please note, that [Button](#button) component has a `tooltip` prop, and -it is recommended to use that prop instead. - -Usage: - -```jsx - - Sample text. - - -``` - -Props: - -- `position: string` - Tooltip position. -- `content/children: string` - Content of the tooltip. Must be a plain string. -Fragments or other elements are **not** supported. +# tgui + +## Introduction + +tgui is a robust user interface framework of /tg/station. + +tgui is very different from most UIs you will encounter in BYOND programming. +It is heavily reliant on Javascript and web technologies as opposed to DM. +If you are familiar with NanoUI (a library which can be found on almost +every other SS13 codebase), tgui should be fairly easy to pick up. + +## Learn tgui + +People come to tgui from different backgrounds and with different +learning styles. Whether you prefer a more theoretical or a practical +approach, we hope you’ll find this section helpful. + +### Practical tutorial + +If you are completely new to frontend and prefer to **learn by doing**, +start with our [practical tutorial](docs/tutorial-and-examples.md). + +### Guides + +This project uses **Inferno** - a very fast UI rendering engine with a similar +API to React. Take your time to read these guides: + +- [React guide](https://reactjs.org/docs/hello-world.html) +- [Inferno documentation](https://infernojs.org/docs/guides/components) - +highlights differences with React. + +If you were already familiar with an older, Ractive-based tgui, and want +to translate concepts between old and new tgui, read this +[interface conversion guide](docs/converting-old-tgui-interfaces.md). + +## Pre-requisites + +You will need these programs to start developing in tgui: + +- [Node v12.13+](https://nodejs.org/en/download/) +- [Yarn v1.19+](https://yarnpkg.com/en/docs/install) +- [MSys2](https://www.msys2.org/) (optional) + +> MSys2 closely replicates a unix-like environment which is necessary for +> the `bin/tgui` script to run. It comes with a robust "mintty" terminal +> emulator which is better than any standard Windows shell, it supports +> "git" out of the box (almost like Git for Windows, but better), has +> a "pacman" package manager, and you can install a text editor like "vim" +> for a full boomer experience. + +## Usage + +**For MSys2, Git Bash, WSL, Linux or macOS users:** + +First and foremost, change your directory to `tgui`. + +Run `bin/tgui --install-git-hooks` (optional) to install merge drivers +which will assist you in conflict resolution when rebasing your branches. + +Run one of the following: + +- `bin/tgui` - build the project in production mode. +- `bin/tgui --dev` - launch a development server. + - tgui development server provides you with incremental compilation, + hot module replacement and logging facilities in all running instances + of tgui. In short, this means that you will instantly see changes in the + game as you code it. Very useful, highly recommended. + - In order to use it, you should start the game server first, connect to it + and wait until the world has been properly loaded and you are no longer + in the lobby. Start tgui dev server. You'll know that it's hooked correctly + if data gets dumped to the log when tgui windows are opened. +- `bin/tgui --dev --reload` - reload byond cache once. +- `bin/tgui --dev --debug` - run server with debug logging enabled. +- `bin/tgui --dev --no-hot` - disable hot module replacement (helps when +doing development on IE8). +- `bin/tgui --lint` - show problems with the code. +- `bin/tgui --lint --fix` - auto-fix problems with the code. +- `bin/tgui --analyze` - run a bundle analyzer. +- `bin/tgui --clean` - clean up project repo. +- `bin/tgui [webpack options]` - build the project with custom webpack +options. + +**For everyone else:** + +If you haven't opened the console already, you can do that by holding +Shift and right clicking on the `tgui` folder, then pressing +either `Open command window here` or `Open PowerShell window here`. + +Run `yarn install` to install npm dependencies, then one of the following: + +- `yarn run build` - build the project in production mode. +- `yarn run watch` - launch a development server. +- `yarn run lint` - show problems with the code. +- `yarn run lint --fix` - auto-fix problems with the code. +- `yarn run analyze` - run a bundle analyzer. + +We also got some batch files in store, for those who don't like fiddling +with the console: + +- `bin/tgui-build.bat` - build the project in production mode. +- `bin/tgui-dev-server.bat` - launch a development server. + +> Remember to always run a full build before submitting a PR. It creates +> a compressed javascript bundle which is then referenced from DM code. +> We prefer to keep it version controlled, so that people could build the +> game just by using Dream Maker. + +## Project structure + +- `/packages` - Each folder here represents a self-contained Node module. +- `/packages/common` - Helper functions +- `/packages/tgui/index.js` - Application entry point. +- `/packages/tgui/components` - Basic UI building blocks. +- `/packages/tgui/interfaces` - Actual in-game interfaces. +Interface takes data via the `state` prop and outputs an html-like stucture, +which you can build using existing UI components. +- `/packages/tgui/routes.js` - This is where you want to register new +interfaces, otherwise they simply won't load. +- `/packages/tgui/layout.js` - A root-level component, holding the +window elements, like the titlebar, buttons, resize handlers. Calls +`routes.js` to decide which component to render. +- `/packages/tgui/styles/main.scss` - CSS entry point. +- `/packages/tgui/styles/atomic.scss` - Atomic CSS classes. +These are very simple, tiny, reusable CSS classes which you can use and +combine to change appearance of your elements. Keep them small. +- `/packages/tgui/styles/components.scss` - CSS classes which are used +in UI components, and most of the stylesheets referenced here are located +in `/packages/tgui/components`. These stylesheets closely follow the +[BEM](https://en.bem.info/methodology/) methodology. +- `/packages/tgui/styles/functions.scss` - Useful SASS functions. +Stuff like `lighten`, `darken`, `luminance` are defined here. + +## Component reference + +> Notice: This documentation might be out of date, so always check the source +> code to see the most up-to-date information. + +These are the components which you can use for interface construction. +If you have trouble finding the exact prop you need on a component, +please note, that most of these components inherit from other basic +components, such as `Box`. This component in particular provides a lot +of styling options for all components, e.g. `color` and `opacity`, thus +it is used a lot in this framework. + +There are a few important semantics you need to know about: + +- `content` prop is a synonym to a `children` prop. + - `content` is better used when your element is a self-closing tag + (like ``), and when content is long and complex. This is + a native React prop (unlike `content`), and contains all elements you + defined between the opening and the closing tag of an element. + - You should never use both on a same element. + - You should never use `children` explicitly as a prop on an element. +- Inferno supports both camelcase (`onClick`) and lowercase (`onclick`) +event names. + - Camel case names are what's called "synthetic" events, and are the + *preferred way* of handling events in React, for efficiency and + performance reasons. Please read + [Inferno Event Handling](https://infernojs.org/docs/guides/event-handling) + to understand what this is about. + - Lower case names are native browser events and should be used sparingly, + for example when you need an explicit IE8 support. **DO NOT** use + lowercase event handlers unless you really know what you are doing. + - [Button](#button) component straight up does not support lowercase event + handlers. Use the camel case `onClick` instead. + +### `AnimatedNumber` + +This component provides animations for numeric values. + +Props: + +- `value: number` - Value to animate. +- `initial: number` - Initial value to use in animation when element +first appears. If you set initial to `0` for example, number will always +animate starting from `0`, and if omitted, it will not play an initial +animation. +- `format: value => value` - Output formatter. + - Example: `value => Math.round(value)`. +- `children: (formattedValue, rawValue) => any` - Pull the animated number to +animate more complex things deeper in the DOM tree. + - Example: `(_, value) => ` + +### `BlockQuote` + +Just a block quote, just like this example in markdown: + +> Here's an example of a block quote. + +Props: + +- See inherited props: [Box](#box) + +### `Box` + +The Box component serves as a wrapper component for most of the CSS utility +needs. It creates a new DOM element, a `
` by default that can be changed +with the `as` property. Let's say you want to use a `` instead: + +```jsx + +
+ + + + ); +}; + +export class CameraConsole extends Component { + constructor() { + super(); + this.state = { + searchTerm: '', + }; + } + + render() { + const { props } = this; + const { act, data } = useBackend(props); + const { searchTerm } = this.state; + const { activeCamera } = data; + const cameras = selectCameras(data.cameras, searchTerm); + return ( + + this.setState({ + searchTerm: value, + })} /> +
+ {cameras.map(camera => ( + // We're not using the component here because performance + // would be absolutely abysmal (50+ ms for each re-render). +
{ + refocusLayout(); + act('switch_camera', { + name: camera.name, + }); + }}> + {camera.name} +
+ ))} +
+
+ ); + } +} diff --git a/tgui/packages/tgui/interfaces/Canvas.js b/tgui/packages/tgui/interfaces/Canvas.js index b30639697c2..9571d94e225 100644 --- a/tgui/packages/tgui/interfaces/Canvas.js +++ b/tgui/packages/tgui/interfaces/Canvas.js @@ -73,7 +73,7 @@ class PaintCanvas extends Component { height={y_size || 300} {...rest} onClick={e => this.clickwrapper(e)}> - Canvas failed to render. + Canvas failed to render. ); } diff --git a/tgui/packages/tgui/interfaces/CargoHoldTerminal.js b/tgui/packages/tgui/interfaces/CargoHoldTerminal.js new file mode 100644 index 00000000000..9a17b573a89 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CargoHoldTerminal.js @@ -0,0 +1,54 @@ +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { AnimatedNumber, Button, Box, Section, LabeledList } from '../components'; + +export const CargoHoldTerminal = props => { + const { act, data } = useBackend(props); + const { + points, + pad, + sending, + status_report, + } = data; + return ( + +
+ + + + credits + + + +
+
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/ExosuitControlConsole.js b/tgui/packages/tgui/interfaces/ExosuitControlConsole.js new file mode 100644 index 00000000000..06645d622a2 --- /dev/null +++ b/tgui/packages/tgui/interfaces/ExosuitControlConsole.js @@ -0,0 +1,98 @@ +import { toFixed } from 'common/math'; +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { AnimatedNumber, Box, Button, NoticeBox, Section, LabeledList } from '../components'; + +export const ExosuitControlConsole = props => { + const { act, data } = useBackend(props); + const { + mechs = [], + } = data; + + if (!mechs.length) { + return ( +
+ + No exosuits detected + +
+ ); + } + + return mechs.map(mech => { + return ( +
+
+ ); + }); +}; diff --git a/tgui/packages/tgui/interfaces/Gateway.js b/tgui/packages/tgui/interfaces/Gateway.js new file mode 100644 index 00000000000..e884cb5a1af --- /dev/null +++ b/tgui/packages/tgui/interfaces/Gateway.js @@ -0,0 +1,78 @@ +import { useBackend } from '../backend'; +import { Box, Button, NoticeBox, Section, Icon, ProgressBar } from '../components'; +import { Fragment } from 'inferno'; + +export const Gateway = props => { + const { act, data } = useBackend(props); + const { + gateway_present = false, + gateway_status = false, + current_target = null, + destinations = [], + } = data; + + if (!gateway_present) { + return ( +
+ + No linked gateway + + +
+ ); + } + + if (current_target) + { + return ( +
+ + +
+ ); + } + + if (!destinations.length) { + return (
No gateway nodes detected.
); + } + + const GatewayDest = dest => { + if (dest.availible) + { + return ( +
+ +
); + } + else + { + return ( +
+ {dest.reason} + {!!dest.timeout && ()} +
); + } + }; + + return ( + + {!gateway_status && (Gateway Unpowered)} + {destinations.map(GatewayDest)} + ); +}; diff --git a/tgui/packages/tgui/interfaces/GravityGenerator.js b/tgui/packages/tgui/interfaces/GravityGenerator.js index 9fbf263a381..11e203b97a1 100644 --- a/tgui/packages/tgui/interfaces/GravityGenerator.js +++ b/tgui/packages/tgui/interfaces/GravityGenerator.js @@ -11,56 +11,61 @@ export const GravityGenerator = props => { on, operational, } = data; + + if (!operational) { + return ( +
+ + No data available + +
+ ); + } + return (
- {!operational && ( - - No data available - - ) || ( - - -
{operational && charging_state !== 0 && ( diff --git a/tgui/packages/tgui/interfaces/GulagItemReclaimer.js b/tgui/packages/tgui/interfaces/GulagItemReclaimer.js index a113b15a4b9..ed640c122e5 100644 --- a/tgui/packages/tgui/interfaces/GulagItemReclaimer.js +++ b/tgui/packages/tgui/interfaces/GulagItemReclaimer.js @@ -1,9 +1,22 @@ import { useBackend } from '../backend'; -import { Button, Section, Table } from '../components'; +import { Button, NoticeBox, Section, Table } from '../components'; export const GulagItemReclaimer = props => { const { act, data } = useBackend(props); - const mobs = data.mobs || []; + const { + mobs = [], + } = data; + + if (!mobs.length) { + return ( +
+ + No stored items + +
+ ); + } + return (
diff --git a/tgui/packages/tgui/interfaces/HypnoChair.js b/tgui/packages/tgui/interfaces/HypnoChair.js index 00ef2e819dc..6348ca272e0 100644 --- a/tgui/packages/tgui/interfaces/HypnoChair.js +++ b/tgui/packages/tgui/interfaces/HypnoChair.js @@ -12,7 +12,7 @@ export const HypnoChair = props => { The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to - ensure immediate and complete obedience and truthfulness. + ensure immediate and complete obedience and truthfulness.
KitchenSinkBlockQuote, }, + { + title: 'ByondUi', + component: () => KitchenSinkByondUi, + }, ]; export const KitchenSink = props => { @@ -70,7 +75,7 @@ export const KitchenSink = props => { {() => { const Component = page.component(); return ( - + ); }} @@ -94,7 +99,7 @@ const KitchenSinkButton = props => {
- Name + Name - Mode + Mode - Code + Code - Relay + Relay {saved_settings.map(setting => ( @@ -156,7 +156,7 @@ export const NaniteRemote = props => {
) : ( - No settings currently saved + No settings currently saved )}
diff --git a/tgui/packages/tgui/interfaces/NtosAiRestorer.js b/tgui/packages/tgui/interfaces/NtosAiRestorer.js deleted file mode 100644 index ee68bbd5c41..00000000000 --- a/tgui/packages/tgui/interfaces/NtosAiRestorer.js +++ /dev/null @@ -1,87 +0,0 @@ -import { Section, Box, Button, NoticeBox, ProgressBar, LabeledList } from "../components"; -import { useBackend } from "../backend"; -import { Fragment } from "inferno"; - -export const NtosAiRestorer = props => { - const { act, data } = useBackend(props); - - const { - nocard, - error, - name, - ai_laws, - isDead, - restoring, - } = data; - - return ( - - {error && ( - - {error} - - )} -
-
- )} - -
- ); -}; diff --git a/tgui/packages/tgui/interfaces/NtosCard.js b/tgui/packages/tgui/interfaces/NtosCard.js index c5eb64c102b..eea3acf23ed 100644 --- a/tgui/packages/tgui/interfaces/NtosCard.js +++ b/tgui/packages/tgui/interfaces/NtosCard.js @@ -4,8 +4,6 @@ import { Button, NoticeBox, Section, Tabs, Input } from '../components'; import { AccessList } from './common/AccessList'; import { map } from 'common/collections'; - - export const NtosCard = props => { const { act, data } = useBackend(props); diff --git a/tgui/packages/tgui/interfaces/NtosConfiguration.js b/tgui/packages/tgui/interfaces/NtosConfiguration.js index bceaf5560d5..966876d6586 100644 --- a/tgui/packages/tgui/interfaces/NtosConfiguration.js +++ b/tgui/packages/tgui/interfaces/NtosConfiguration.js @@ -23,7 +23,7 @@ export const NtosConfiguration = props => { inline bold mr={1}> - Power Draw: {power_usage}W + Power Draw: {power_usage}W )}> diff --git a/tgui/packages/tgui/interfaces/NtosCrewManifest.js b/tgui/packages/tgui/interfaces/NtosCrewManifest.js index 4fec3ced156..16355bdbc5c 100644 --- a/tgui/packages/tgui/interfaces/NtosCrewManifest.js +++ b/tgui/packages/tgui/interfaces/NtosCrewManifest.js @@ -34,7 +34,7 @@ export const NtosCrewManifest = props => { {entry.name} - ({entry.rank}) + ({entry.rank}) ))} diff --git a/tgui/packages/tgui/interfaces/OperatingComputer.js b/tgui/packages/tgui/interfaces/OperatingComputer.js index 59cdfadc686..ba249435a57 100644 --- a/tgui/packages/tgui/interfaces/OperatingComputer.js +++ b/tgui/packages/tgui/interfaces/OperatingComputer.js @@ -105,7 +105,7 @@ export const OperatingComputer = props => { {procedure.alt_chems_needed && ( - Required Chemicals: + Required Chemicals:
{procedure.alt_chems_needed} diff --git a/tgui/packages/tgui/interfaces/ParticleAccelerator.js b/tgui/packages/tgui/interfaces/ParticleAccelerator.js new file mode 100644 index 00000000000..d92d4a836e3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/ParticleAccelerator.js @@ -0,0 +1,59 @@ +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { Box, Button, LabeledList, Section } from '../components'; + +export const ParticleAccelerator = props => { + const { act, data } = useBackend(props); + const { + assembled, + power, + strength, + } = data; + return ( + +
+ + act('scan')} /> + )}> + + {assembled + ? "Ready - All parts in place" + : "Unable to detect all parts"} + + + +
+
+ + +
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/RemoteRobotControl.js b/tgui/packages/tgui/interfaces/RemoteRobotControl.js new file mode 100644 index 00000000000..123e4c708f7 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RemoteRobotControl.js @@ -0,0 +1,66 @@ +import { decodeHtmlEntities } from 'common/string'; +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { Box, Button, NoticeBox, Section, LabeledList } from '../components'; + +export const RemoteRobotControl = props => { + const { act, data } = useBackend(props); + const { + robots = [], + } = data; + + if (!robots.length) { + return ( +
+ + No robots detected + +
+ ); + } + + return robots.map(robot => { + return ( +
+
+ ); + }); +}; diff --git a/tgui/packages/tgui/interfaces/RoboticsControlConsole.js b/tgui/packages/tgui/interfaces/RoboticsControlConsole.js new file mode 100644 index 00000000000..8a25eba57d7 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RoboticsControlConsole.js @@ -0,0 +1,165 @@ +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { Box, Button, NoticeBox, Section, Tabs, LabeledList } from '../components'; + +export const RoboticsControlConsole = props => { + const { state } = props; + const { act, data } = useBackend(props); + const { + can_hack, + cyborgs = [], + drones = [], + } = data; + + return ( + + + {() => ( + + )} + + + {() => ( + + )} + + + ); +}; + +const Cyborgs = props => { + const { state, cyborgs, can_hack } = props; + const { act, data } = useBackend(props); + + if (!cyborgs.length) { + return ( +
+ + No cyborg units detected within access parameters + +
+ ); + } + + return cyborgs.map(cyborg => { + return ( +
+ {!!can_hack && !cyborg.emagged && ( +
+ ); + }); +}; + +const Drones = props => { + const { state, drones } = props; + const { act, data } = useBackend(props); + + if (!drones.length) { + return ( +
+ + No drone units detected within access parameters + +
+ ); + } + + return drones.map(drone => { + return ( +
act('killdrone', { + ref: drone.ref, + })} /> + )}> + + + + {drone.status + ? "Not Responding" + : 'Nominal'} + + + +
+ ); + }); +}; diff --git a/tgui/packages/tgui/interfaces/Roulette.js b/tgui/packages/tgui/interfaces/Roulette.js index d184156995f..d87ffceba7a 100644 --- a/tgui/packages/tgui/interfaces/Roulette.js +++ b/tgui/packages/tgui/interfaces/Roulette.js @@ -268,7 +268,7 @@ export class RouletteBetTable extends Component { 'Roulette__lowertable--cell', 'Roulette__lowertable--header', ])}> - Last Spun: + Last Spun: - Current Bet: + Current Bet: @@ -362,14 +362,14 @@ export class RouletteBetTable extends Component { m={1} fontSize="14px" textAlign="center"> - Swipe an ID card with a connected account to spin! + Swipe an ID card with a connected account to spin! - House Balance: + House Balance: {data.HouseBalance ? data.HouseBalance + ' cr': "None"} diff --git a/tgui/packages/tgui/interfaces/TransferValve.js b/tgui/packages/tgui/interfaces/TransferValve.js index a48bebc5d6a..ed480a97b1b 100644 --- a/tgui/packages/tgui/interfaces/TransferValve.js +++ b/tgui/packages/tgui/interfaces/TransferValve.js @@ -44,7 +44,7 @@ export const TransferValve = props => { ) : ( - Insert Assembly + Insert Assembly )}
@@ -61,7 +61,7 @@ export const TransferValve = props => { ) : ( - Insert Tank + Insert Tank )} @@ -78,7 +78,7 @@ export const TransferValve = props => { ) : ( - Insert Tank + Insert Tank )} diff --git a/tgui/packages/tgui/interfaces/Vending.js b/tgui/packages/tgui/interfaces/Vending.js index e394c2d2418..651d3c778ec 100644 --- a/tgui/packages/tgui/interfaces/Vending.js +++ b/tgui/packages/tgui/interfaces/Vending.js @@ -26,20 +26,20 @@ export const Vending = props => { } return ( - {data.onstation && ( + {!!data.onstation && (
{data.user && ( - Welcome, {data.user.name}, + Welcome, {data.user.name}, {' '} {data.user.job || "Unemployed"}!
- Your balance is {data.user.cash} credits. + Your balance is {data.user.cash} credits.
) || ( - No registered ID card!
- Please contact your local HoP! + No registered ID card!
+ Please contact your local HoP!
)}
diff --git a/tgui/packages/tgui/layout.js b/tgui/packages/tgui/layout.js index 4ee02dab875..cfac2b8c5ec 100644 --- a/tgui/packages/tgui/layout.js +++ b/tgui/packages/tgui/layout.js @@ -3,7 +3,6 @@ import { decodeHtmlEntities } from 'common/string'; import { Component, Fragment } from 'inferno'; import { runCommand, winset } from './byond'; import { Box, TitleBar } from './components'; -import { Toast } from './components/Toast'; import { UI_DISABLED, UI_INTERACTIVE } from './constants'; import { dragStartHandler, resizeStartHandler } from './drag'; import { releaseHeldKeys } from './hotkeys'; @@ -39,7 +38,7 @@ export class Layout extends Component { const { state, dispatch } = props; const { config } = state; const route = getRoute(state); - const { scrollable, theme } = route || {}; + const { scrollable, resizable, theme } = route || {}; let contentElement; if (route) { const RoutedComponent = route.component(); @@ -87,14 +86,13 @@ export class Layout extends Component { winset(config.window, 'is-visible', false); runCommand(`uiclose ${config.ref}`); }} /> - {contentElement} - {showDimmer && ( -
- )} - {state.toastText && ( - - )} - {config.fancy && scrollable && ( +
+ {contentElement} + {showDimmer && ( +
+ )} +
+ {config.fancy && (scrollable || resizable) && (
diff --git a/tgui/packages/tgui/public/tgui.bundle.css b/tgui/packages/tgui/public/tgui.bundle.css index 74c3608c076..5d56a1f51a1 100644 --- a/tgui/packages/tgui/public/tgui.bundle.css +++ b/tgui/packages/tgui/public/tgui.bundle.css @@ -1 +1 @@ -body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#0d0d0d!important}.color-white{color:#fff!important}.color-red{color:#d33!important}.color-orange{color:#f37827!important}.color-yellow{color:#fbd814!important}.color-olive{color:#c0d919!important}.color-green{color:#22be47!important}.color-teal{color:#00c5bd!important}.color-blue{color:#238cdc!important}.color-violet{color:#6c3fcc!important}.color-purple{color:#a93bcd!important}.color-pink{color:#e2439c!important}.color-brown{color:#af6d43!important}.color-grey{color:#7d7d7d!important}.color-good{color:#62b62a!important}.color-average{color:#f1951d!important}.color-bad{color:#d33!important}.color-label{color:#8496ab!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.display-none{display:none}.display-block{display:block}.display-inline{display:inline}.display-inline-block{display:inline-block}.m-0{margin:0}.mx-0{margin-left:0;margin-right:0}.my-0{margin-top:0;margin-bottom:0}.ml-0{margin-left:0}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.m-1{margin:6px}.mx-1{margin-left:6px;margin-right:6px}.my-1{margin-top:6px;margin-bottom:6px}.ml-1{margin-left:6px}.mt-1{margin-top:6px}.mr-1{margin-right:6px}.mb-1{margin-bottom:6px}.m-2{margin:12px}.mx-2{margin-left:12px;margin-right:12px}.my-2{margin-top:12px;margin-bottom:12px}.ml-2{margin-left:12px}.mt-2{margin-top:12px}.mr-2{margin-right:12px}.mb-2{margin-bottom:12px}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8496ab;border-left:2px solid #8496ab;padding-left:6px}.Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0}.Button .fa,.Button .far,.Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:3px}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#252525;color:#fff;background-color:rgba(37,37,37,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#323232;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.Button--altSelected--bottom:after{left:0;height:2px;width:100%}.Button--altSelected--bottom:after,.Button--altSelected--right:after{content:"";position:absolute;bottom:0;right:0;background-color:#fff;border-radius:0}.Button--altSelected--right:after{top:0;height:100%;width:3px}.ColorBox{display:inline-block;width:12px;height:12px;line-height:12px;text-align:center}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:12px;width:100px;line-height:17px;user-select:none}.Dropdown__arrow-button{float:right;padding-left:6px;border-left:1px solid #000;border-left:1px solid rgba(0,0,0,.25)}.Dropdown__menu{position:absolute;overflow-y:auto;z-index:5;width:100px;max-height:200px;overflow-y:scroll;border-radius:0 0 2px 2px;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menuentry{padding:2px 4px;font-family:Verdana,sans-serif;font-size:12px;line-height:17px;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:#444;transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--spacing--1{margin:-3px -3px 3px}.Flex--spacing--1>.Flex__item{margin:3px}.Flex--spacing--2{margin:-6px -6px 6px}.Flex--spacing--2>.Flex__item{margin:6px}.LabeledList{display:table;width:100%;width:calc(100% + 12px);border-collapse:collapse;border-spacing:0;margin:-3px -6px 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:3px 6px;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:60px}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:1px;padding-bottom:0}.Layout{bottom:0;right:0;color:#fff;background-color:#252525;background-image:linear-gradient(180deg,#2a2a2a 0,#202020)}.Layout,.Layout__titleBar{position:fixed;top:0;left:0}.Layout__titleBar{z-index:1;width:100%;height:32px}.Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#1c1c1c;scrollbar-face-color:#3b3b3b;scrollbar-3dlight-color:#252525;scrollbar-highlight-color:#252525;scrollbar-track-color:#1c1c1c;scrollbar-arrow-color:#929292;scrollbar-shadow-color:#3b3b3b}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Layout__dimmer{top:32px;background-color:rgba(62,62,62,.25);pointer-events:none}.Layout__dimmer,.Layout__toast{position:fixed;bottom:0;left:0;right:0}.Layout__toast{font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#131313;color:hsla(0,0%,100%,.8)}.Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}.NtosHeader__left{position:absolute;left:12px}.NtosHeader__right{position:absolute;right:12px}.NtosHeader__icon{margin-top:-9px;margin-bottom:-6px;vertical-align:middle}.NtosWrapper__header{position:absolute;top:32px;left:0;right:0;height:28px;line-height:27px;background-color:rgba(0,0,0,.5);font-family:Consolas,monospace;font-size:14px;user-select:none;-ms-user-select:none}.NtosWrapper__content .Layout__content{margin-top:28px;font-family:Consolas,monospace;font-size:14px}.NuclearBomb__displayBox{background-color:#002003;border:4px inset #e8e4c9;color:#03e017;font-size:24px;font-family:monospace;padding:6px}.NuclearBomb__Button--keypad{background-color:#e8e4c9;border-color:#e8e4c9}.NuclearBomb__Button--keypad:hover{background-color:#f7f6ee!important;border-color:#f7f6ee!important}.NuclearBomb__Button--1{background-color:#d3cfb7!important;border-color:#d3cfb7!important;color:#a9a692!important}.NuclearBomb__Button--E{background-color:#d9b804!important;border-color:#d9b804!important}.NuclearBomb__Button--E:hover{background-color:#f3d00e!important;border-color:#f3d00e!important}.NuclearBomb__Button--C{background-color:#bd2020!important;border-color:#bd2020!important}.NuclearBomb__Button--C:hover{background-color:#d52b2b!important;border-color:#d52b2b!important}.NuclearBomb__NTIcon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDQyNSAyMDAiIG9wYWNpdHk9Ii4zMyI+PHBhdGggZD0iTTE3OC4wMDQuMDM5SDEwNi44YTYuNzYxIDYuMDI2IDAgMDAtNi43NjEgNi4wMjV2MTg3Ljg3MmE2Ljc2MSA2LjAyNiAwIDAwNi43NjEgNi4wMjVoNTMuMTA3YTYuNzYxIDYuMDI2IDAgMDA2Ljc2Mi02LjAyNVY5Mi4zOTJsNzIuMjE2IDEwNC43YTYuNzYxIDYuMDI2IDAgMDA1Ljc2IDIuODdIMzE4LjJhNi43NjEgNi4wMjYgMCAwMDYuNzYxLTYuMDI2VjYuMDY0QTYuNzYxIDYuMDI2IDAgMDAzMTguMi4wNGgtNTQuNzE3YTYuNzYxIDYuMDI2IDAgMDAtNi43NiA2LjAyNXYxMDIuNjJMMTgzLjc2MyAyLjkwOWE2Ljc2MSA2LjAyNiAwIDAwLTUuNzYtMi44N3pNNC44NDUgMjIuMTA5QTEzLjQxMiAxMi41MDIgMCAwMTEzLjQ3OC4wMzloNjYuMTE4QTUuMzY1IDUgMCAwMTg0Ljk2IDUuMDR2NzkuODh6TTQyMC4xNTUgMTc3Ljg5MWExMy40MTIgMTIuNTAyIDAgMDEtOC42MzMgMjIuMDdoLTY2LjExOGE1LjM2NSA1IDAgMDEtNS4zNjUtNS4wMDF2LTc5Ljg4eiIvPjwvc3ZnPg==);background-size:70%;background-position:50%;background-repeat:no-repeat}.Input{position:relative;display:inline-block;width:120px;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.NumberInput{position:relative;display:inline-block;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:2px;color:#88bfff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:6px}.NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.ProgressBar--color--default{border:1px solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:1px solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:1px solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:1px solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:1px solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:1px solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:1px solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:1px solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:1px solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:1px solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:1px solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:1px solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:1px solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:1px solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:1px solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:1px solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:1px solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:1px solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:1px solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Roulette{font-family:Palatino}.Roulette__board{display:table;width:100%;border-collapse:collapse;border:2px solid #fff;margin:0}.Roulette__board-row{padding:0;margin:0}.Roulette__board-cell{display:table-cell;padding:0;margin:0;border:2px solid #fff;font-family:Palatino}.Roulette__board-cell:first-child{padding-left:0}.Roulette__board-cell:last-child{padding-right:0}.Roulette__board-extrabutton{text-align:center;font-size:20px;font-weight:700;height:28px;border:none!important;margin:0!important;padding-top:4px!important;color:#fff!important}.Roulette__lowertable{margin-top:8px;margin-left:80px;margin-right:80px;border-collapse:collapse;border:2px solid #fff;border-spacing:0}.Roulette__lowertable--cell{border:2px solid #fff;padding:0;margin:0}.Roulette__lowertable--betscell{vertical-align:top}.Roulette__lowertable--spinresult{text-align:center;font-size:100px;font-weight:700;vertical-align:middle}.Roulette__lowertable--spinresult-black{background-color:#000}.Roulette__lowertable--spinresult-red{background-color:#db2828}.Roulette__lowertable--spinresult-green{background-color:#20b142}.Roulette__lowertable--spinbutton{margin:0!important;border:none!important;font-size:50px;line-height:60px!important;text-align:center;font-weight:700}.Roulette__lowertable--header{width:1%;text-align:center;font-size:20px;font-weight:700}.Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:6px;border-bottom:2px solid #4972a1}.Section__titleText{font-size:14px;font-weight:700}.Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.Section__content{padding:8px 6px}.Section--level--1 .Section__titleText{font-size:14px}.Section--level--2 .Section__titleText{font-size:13px}.Section--level--3 .Section__titleText{font-size:12px}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 3px}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:6px}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs__content{padding-top:6px;border-top:2px solid hsla(0,0%,100%,.1)}.Tabs--vertical{display:table-row}.Tabs--vertical>.Tabs__content{display:table-cell;width:100%;padding-top:0;padding-left:9px;border-top:0}.Tabs--vertical>.Tabs__tabBox{display:table-cell;border-right:2px solid hsla(0,0%,100%,.1);vertical-align:top}.Tabs--vertical>.Tabs__tabBox>.Tabs__tab{display:block!important;margin-right:0;margin-bottom:0;padding:1px 9px 0 6px;border-bottom:2px solid hsla(0,0%,100%,.1)}.Tabs--vertical>.Tabs__tabBox>.Tabs__tab:last-child{border-bottom:0}.TitleBar{background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#363636;transition:color .25s,background-color .25s}.TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.TitleBar__minimize{position:absolute;top:6px;right:46px}.TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:250px;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.Tooltip--bottom:after,.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.Tooltip--bottom:after{top:100%;left:50%}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDQyNSAyMDAiIG9wYWNpdHk9Ii4zMyI+PHBhdGggZD0iTTE3OC4wMDQuMDM5SDEwNi44YTYuNzYxIDYuMDI2IDAgMDAtNi43NjEgNi4wMjV2MTg3Ljg3MmE2Ljc2MSA2LjAyNiAwIDAwNi43NjEgNi4wMjVoNTMuMTA3YTYuNzYxIDYuMDI2IDAgMDA2Ljc2Mi02LjAyNVY5Mi4zOTJsNzIuMjE2IDEwNC43YTYuNzYxIDYuMDI2IDAgMDA1Ljc2IDIuODdIMzE4LjJhNi43NjEgNi4wMjYgMCAwMDYuNzYxLTYuMDI2VjYuMDY0QTYuNzYxIDYuMDI2IDAgMDAzMTguMi4wNGgtNTQuNzE3YTYuNzYxIDYuMDI2IDAgMDAtNi43NiA2LjAyNXYxMDIuNjJMMTgzLjc2MyAyLjkwOWE2Ljc2MSA2LjAyNiAwIDAwLTUuNzYtMi44N3pNNC44NDUgMjIuMTA5QTEzLjQxMiAxMi41MDIgMCAwMTEzLjQ3OC4wMzloNjYuMTE4QTUuMzY1IDUgMCAwMTg0Ljk2IDUuMDR2NzkuODh6TTQyMC4xNTUgMTc3Ljg5MWExMy40MTIgMTIuNTAyIDAgMDEtOC42MzMgMjIuMDdoLTY2LjExOGE1LjM2NSA1IDAgMDEtNS4zNjUtNS4wMDF2LTc5Ljg4eiIvPjwvc3ZnPg==);background-size:70%;background-position:50%;background-repeat:no-repeat}.action_test{display:inherit}.theme-cardtable .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-cardtable .Button:last-child{margin-right:0}.theme-cardtable .Button .fa,.theme-cardtable .Button .far,.theme-cardtable .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-cardtable .Button--hasContent .fa,.theme-cardtable .Button--hasContent .far,.theme-cardtable .Button--hasContent .fas{margin-right:3px}.theme-cardtable .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-cardtable .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-cardtable .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff}.theme-cardtable .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--default:focus,.theme-cardtable .Button--color--default:hover{background-color:#1c8247;color:#fff}.theme-cardtable .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-cardtable .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--caution:focus,.theme-cardtable .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-cardtable .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-cardtable .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--danger:focus,.theme-cardtable .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-cardtable .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff;background-color:rgba(17,112,57,0);color:hsla(0,0%,100%,.5)}.theme-cardtable .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--transparent:focus,.theme-cardtable .Button--color--transparent:hover{background-color:#1c8247;color:#fff}.theme-cardtable .Button--disabled{background-color:#363636!important}.theme-cardtable .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-cardtable .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--selected:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--selected:focus,.theme-cardtable .Button--selected:hover{background-color:#b31212;color:#fff}.theme-cardtable .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-cardtable .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-cardtable .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#117039;background-image:linear-gradient(180deg,#117039 0,#117039)}.theme-cardtable .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-cardtable .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#0d542b;scrollbar-face-color:#16914a;scrollbar-3dlight-color:#117039;scrollbar-highlight-color:#117039;scrollbar-track-color:#0d542b;scrollbar-arrow-color:#5ae695;scrollbar-shadow-color:#16914a}.theme-cardtable .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-cardtable .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(39,148,85,.25);pointer-events:none}.theme-cardtable .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#09381d;color:hsla(0,0%,100%,.8)}.theme-cardtable .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-cardtable .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-cardtable .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-cardtable .Input{position:relative;display:inline-block;width:120px;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:0;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-cardtable .Input--fluid{display:block;width:auto}.theme-cardtable .Input__baseline{display:inline-block;color:transparent}.theme-cardtable .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-cardtable .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-cardtable .NumberInput{position:relative;display:inline-block;border:1px solid #fff;border:1px solid hsla(0,0%,100%,.75);border-radius:0;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-cardtable .NumberInput--fluid{display:block}.theme-cardtable .NumberInput__content{margin-left:6px}.theme-cardtable .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-cardtable .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #fff;background-color:#fff}.theme-cardtable .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-cardtable .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-cardtable .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-cardtable .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-cardtable .ProgressBar--color--default{border:1px solid #000}.theme-cardtable .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-cardtable .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-cardtable .Section:last-child{margin-bottom:0}.theme-cardtable .Section__title{position:relative;padding:6px;border-bottom:2px solid #000}.theme-cardtable .Section__titleText{font-size:14px;font-weight:700}.theme-cardtable .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-cardtable .Section__content{padding:8px 6px}.theme-cardtable .Section--level--1 .Section__titleText{font-size:14px}.theme-cardtable .Section--level--2 .Section__titleText{font-size:13px}.theme-cardtable .Section--level--3 .Section__titleText{font-size:12px}.theme-cardtable .Section--level--2,.theme-cardtable .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-cardtable .TitleBar{background-color:#381608;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-cardtable .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#381608;transition:color .25s,background-color .25s}.theme-cardtable .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-cardtable .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-cardtable .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-cardtable .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-cardtable .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-cardtable .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-cardtable .Button{border:2px solid #fff}.theme-malfunction .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-malfunction .Button:last-child{margin-right:0}.theme-malfunction .Button .fa,.theme-malfunction .Button .far,.theme-malfunction .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-malfunction .Button--hasContent .fa,.theme-malfunction .Button--hasContent .far,.theme-malfunction .Button--hasContent .fas{margin-right:3px}.theme-malfunction .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-malfunction .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-malfunction .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#910101;color:#fff}.theme-malfunction .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--default:focus,.theme-malfunction .Button--color--default:hover{background-color:#a60b0b;color:#fff}.theme-malfunction .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-malfunction .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--caution:focus,.theme-malfunction .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-malfunction .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-malfunction .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--danger:focus,.theme-malfunction .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-malfunction .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1b3443;color:#fff;background-color:rgba(27,52,67,0);color:hsla(0,0%,100%,.5)}.theme-malfunction .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--transparent:focus,.theme-malfunction .Button--color--transparent:hover{background-color:#274252;color:#fff}.theme-malfunction .Button--disabled{background-color:#363636!important}.theme-malfunction .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1e5881;color:#fff}.theme-malfunction .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--selected:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--selected:focus,.theme-malfunction .Button--selected:hover{background-color:#2a6894;color:#fff}.theme-malfunction .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-malfunction .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-malfunction .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b3443;background-image:linear-gradient(180deg,#244559 0,#12232d)}.theme-malfunction .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-malfunction .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#142732;scrollbar-face-color:#274b61;scrollbar-3dlight-color:#1b3443;scrollbar-highlight-color:#1b3443;scrollbar-track-color:#142732;scrollbar-arrow-color:#6ba2c3;scrollbar-shadow-color:#274b61}.theme-malfunction .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-malfunction .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(50,79,96,.25);pointer-events:none}.theme-malfunction .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#0e1a22;color:hsla(0,0%,100%,.8)}.theme-malfunction .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-malfunction .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-malfunction .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-malfunction .NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#1a3f57;background-image:repeating-linear-gradient(-45deg,#1a3f57,#1a3f57 10px,#1a3f57 0,#1a3f57 20px)}.theme-malfunction .Input{position:relative;display:inline-block;width:120px;border:1px solid #910101;border:1px solid rgba(145,1,1,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-malfunction .Input--fluid{display:block;width:auto}.theme-malfunction .Input__baseline{display:inline-block;color:transparent}.theme-malfunction .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-malfunction .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-malfunction .NumberInput{position:relative;display:inline-block;border:1px solid #910101;border:1px solid rgba(145,1,1,.75);border-radius:2px;color:#910101;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-malfunction .NumberInput--fluid{display:block}.theme-malfunction .NumberInput__content{margin-left:6px}.theme-malfunction .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-malfunction .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #910101;background-color:#910101}.theme-malfunction .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-malfunction .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-malfunction .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-malfunction .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-malfunction .ProgressBar--color--default{border:1px solid #7b0101}.theme-malfunction .ProgressBar--color--default .ProgressBar__fill{background-color:#7b0101}.theme-malfunction .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-malfunction .Section:last-child{margin-bottom:0}.theme-malfunction .Section__title{position:relative;padding:6px;border-bottom:2px solid #910101}.theme-malfunction .Section__titleText{font-size:14px;font-weight:700}.theme-malfunction .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-malfunction .Section__content{padding:8px 6px}.theme-malfunction .Section--level--1 .Section__titleText{font-size:14px}.theme-malfunction .Section--level--2 .Section__titleText{font-size:13px}.theme-malfunction .Section--level--3 .Section__titleText{font-size:12px}.theme-malfunction .Section--level--2,.theme-malfunction .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-malfunction .TitleBar{background-color:#1a3f57;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-malfunction .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#1a3f57;transition:color .25s,background-color .25s}.theme-malfunction .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-malfunction .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-malfunction .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-malfunction .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-malfunction .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-malfunction .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-malfunction .Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.theme-malfunction .Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#235577;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.theme-malfunction .Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.theme-malfunction .Tooltip--long:after{width:250px;white-space:normal}.theme-malfunction .Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.theme-malfunction .Tooltip--bottom:after,.theme-malfunction .Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.theme-malfunction .Tooltip--bottom:after{top:100%;left:50%}.theme-malfunction .Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.theme-malfunction .Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.theme-malfunction .Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.theme-malfunction .Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.theme-malfunction .Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.theme-malfunction .Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.theme-malfunction .Tooltip--left:hover:after,.theme-malfunction .Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.theme-malfunction .Tooltip--right:after{top:50%;left:100%}.theme-malfunction .Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.theme-malfunction .Layout__content{background-image:none}.theme-ntos .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0}.theme-ntos .Button .fa,.theme-ntos .Button .far,.theme-ntos .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .far,.theme-ntos .Button--hasContent .fas{margin-right:3px}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--default:focus,.theme-ntos .Button--color--default:hover{background-color:#465e7a;color:#fff}.theme-ntos .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--caution:focus,.theme-ntos .Button--color--caution:hover{background-color:#f3d00e;color:#000}.theme-ntos .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--danger:focus,.theme-ntos .Button--color--danger:hover{background-color:#d52b2b;color:#fff}.theme-ntos .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1f2b39;color:#fff;background-color:rgba(31,43,57,0);color:rgba(227,240,255,.75)}.theme-ntos .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--transparent:focus,.theme-ntos .Button--color--transparent:hover{background-color:#2b3847;color:#fff}.theme-ntos .Button--disabled{background-color:#999!important}.theme-ntos .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--selected:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--selected:focus,.theme-ntos .Button--selected:hover{background-color:#27ab46;color:#fff}.theme-ntos .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:2px}.theme-ntos .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:2px}.theme-ntos .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1f2b39;background-image:linear-gradient(180deg,#223040 0,#1b2633)}.theme-ntos .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-ntos .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#17202b;scrollbar-face-color:#2e3f55;scrollbar-3dlight-color:#1f2b39;scrollbar-highlight-color:#1f2b39;scrollbar-track-color:#17202b;scrollbar-arrow-color:#7693b5;scrollbar-shadow-color:#2e3f55}.theme-ntos .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-ntos .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(55,69,85,.25);pointer-events:none}.theme-ntos .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#0f151d;color:hsla(0,0%,100%,.8)}.theme-ntos .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-ntos .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-ntos .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:1px solid #384e68}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#384e68}.theme-ntos .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:6px;border-bottom:2px solid #4972a1}.theme-ntos .Section__titleText{font-size:14px;font-weight:700}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-ntos .Section__content{padding:8px 6px}.theme-ntos .Section--level--1 .Section__titleText{font-size:14px}.theme-ntos .Section--level--2 .Section__titleText{font-size:13px}.theme-ntos .Section--level--3 .Section__titleText{font-size:12px}.theme-ntos .Section--level--2,.theme-ntos .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-ntos .TitleBar{background-color:#2a3b4e;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#2a3b4e;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-ntos .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-hackerman .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-hackerman .Button:last-child{margin-right:0}.theme-hackerman .Button .fa,.theme-hackerman .Button .far,.theme-hackerman .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-hackerman .Button--hasContent .fa,.theme-hackerman .Button--hasContent .far,.theme-hackerman .Button--hasContent .fas{margin-right:3px}.theme-hackerman .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-hackerman .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-hackerman .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#0f0;color:#000}.theme-hackerman .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--default:focus,.theme-hackerman .Button--color--default:hover{background-color:#26ff26;color:#000}.theme-hackerman .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-hackerman .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--caution:focus,.theme-hackerman .Button--color--caution:hover{background-color:#f3d00e;color:#000}.theme-hackerman .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-hackerman .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--danger:focus,.theme-hackerman .Button--color--danger:hover{background-color:#d52b2b;color:#fff}.theme-hackerman .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#121b12;color:#fff;background-color:rgba(18,27,18,0);color:hsla(0,0%,100%,.5)}.theme-hackerman .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--transparent:focus,.theme-hackerman .Button--color--transparent:hover{background-color:#1d271d;color:#fff}.theme-hackerman .Button--disabled{background-color:#4a6a4a!important}.theme-hackerman .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0f0;color:#000}.theme-hackerman .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--selected:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--selected:focus,.theme-hackerman .Button--selected:hover{background-color:#26ff26;color:#000}.theme-hackerman .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-hackerman .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-hackerman .Input{position:relative;display:inline-block;width:120px;border:1px solid #0f0;border:1px solid rgba(0,255,0,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-hackerman .Input--fluid{display:block;width:auto}.theme-hackerman .Input__baseline{display:inline-block;color:transparent}.theme-hackerman .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-hackerman .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-hackerman .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#121b12;background-image:linear-gradient(180deg,#121b12 0,#121b12)}.theme-hackerman .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-hackerman .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#0e140e;scrollbar-face-color:#253725;scrollbar-3dlight-color:#121b12;scrollbar-highlight-color:#121b12;scrollbar-track-color:#0e140e;scrollbar-arrow-color:#74a274;scrollbar-shadow-color:#253725}.theme-hackerman .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-hackerman .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(40,50,40,.25);pointer-events:none}.theme-hackerman .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#090e09;color:hsla(0,0%,100%,.8)}.theme-hackerman .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-hackerman .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-hackerman .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-hackerman .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-hackerman .Section:last-child{margin-bottom:0}.theme-hackerman .Section__title{position:relative;padding:6px;border-bottom:2px solid #0f0}.theme-hackerman .Section__titleText{font-size:14px;font-weight:700}.theme-hackerman .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-hackerman .Section__content{padding:8px 6px}.theme-hackerman .Section--level--1 .Section__titleText{font-size:14px}.theme-hackerman .Section--level--2 .Section__titleText{font-size:13px}.theme-hackerman .Section--level--3 .Section__titleText{font-size:12px}.theme-hackerman .Section--level--2,.theme-hackerman .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-hackerman .TitleBar{background-color:#223d22;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-hackerman .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#223d22;transition:color .25s,background-color .25s}.theme-hackerman .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-hackerman .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-hackerman .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-hackerman .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-hackerman .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-hackerman .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-hackerman .Layout__content{background-image:none}.theme-hackerman .Button{font-family:monospace;border:2px outset #0a0;outline:1px solid #007a00}.theme-hackerman .candystripe:nth-child(odd){background-color:rgba(0,100,0,.5)}.theme-retro .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-retro .Button:last-child{margin-right:0}.theme-retro .Button .fa,.theme-retro .Button .far,.theme-retro .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-retro .Button--hasContent .fa,.theme-retro .Button--hasContent .far,.theme-retro .Button--hasContent .fas{margin-right:3px}.theme-retro .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-retro .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-retro .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000}.theme-retro .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--default:focus,.theme-retro .Button--color--default:hover{background-color:#f7f6ee;color:#000}.theme-retro .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-retro .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--caution:focus,.theme-retro .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-retro .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-retro .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--danger:focus,.theme-retro .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-retro .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000;background-color:rgba(232,228,201,0);color:hsla(0,0%,100%,.5)}.theme-retro .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--transparent:focus,.theme-retro .Button--color--transparent:hover{background-color:#f7f6ee;color:#000}.theme-retro .Button--disabled{background-color:#363636!important}.theme-retro .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-retro .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--selected:focus{transition:color .1s,background-color .1s}.theme-retro .Button--selected:focus,.theme-retro .Button--selected:hover{background-color:#b31212;color:#fff}.theme-retro .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-retro .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-retro .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#e8e4c9;background-image:linear-gradient(180deg,#e8e4c9 0,#e8e4c9)}.theme-retro .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-retro .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#c8be7d;scrollbar-face-color:#eae7ce;scrollbar-3dlight-color:#e8e4c9;scrollbar-highlight-color:#e8e4c9;scrollbar-track-color:#c8be7d;scrollbar-arrow-color:#f4f2e4;scrollbar-shadow-color:#eae7ce}.theme-retro .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-retro .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(251,250,246,.25);pointer-events:none}.theme-retro .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#988d41;color:hsla(0,0%,100%,.8)}.theme-retro .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-retro .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-retro .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-retro .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-retro .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-retro .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-retro .ProgressBar--color--default{border:1px solid #000}.theme-retro .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-retro .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-retro .Section:last-child{margin-bottom:0}.theme-retro .Section__title{position:relative;padding:6px;border-bottom:2px solid #000}.theme-retro .Section__titleText{font-size:14px;font-weight:700}.theme-retro .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-retro .Section__content{padding:8px 6px}.theme-retro .Section--level--1 .Section__titleText{font-size:14px}.theme-retro .Section--level--2 .Section__titleText{font-size:13px}.theme-retro .Section--level--3 .Section__titleText{font-size:12px}.theme-retro .Section--level--2,.theme-retro .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-retro .TitleBar{background-color:#585337;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-retro .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#585337;transition:color .25s,background-color .25s}.theme-retro .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-retro .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-retro .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-retro .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-retro .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-retro .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-retro .Button{font-family:monospace;color:#161613;border:8px outset #e8e4c9;outline:3px solid #161613}.theme-retro .Layout__content{background-image:none}.theme-syndicate .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .far,.theme-syndicate .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .far,.theme-syndicate .Button--hasContent .fas{margin-right:3px}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--default:focus,.theme-syndicate .Button--color--default:hover{background-color:#478647;color:#fff}.theme-syndicate .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--caution:focus,.theme-syndicate .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-syndicate .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--danger:focus,.theme-syndicate .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-syndicate .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#550202;color:#fff;background-color:rgba(85,2,2,0);color:hsla(0,0%,100%,.5)}.theme-syndicate .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--transparent:focus,.theme-syndicate .Button--color--transparent:hover{background-color:#650c0c;color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important}.theme-syndicate .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--selected:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--selected:focus,.theme-syndicate .Button--selected:hover{background-color:#b31212;color:#fff}.theme-syndicate .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-syndicate .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-syndicate .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#550202;background-image:linear-gradient(180deg,#730303 0,#370101)}.theme-syndicate .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-syndicate .Layout__content{position:fixed;top:32px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#400202;scrollbar-face-color:#7e0303;scrollbar-3dlight-color:#550202;scrollbar-highlight-color:#550202;scrollbar-track-color:#400202;scrollbar-arrow-color:#fa3030;scrollbar-shadow-color:#7e0303}.theme-syndicate .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-syndicate .Layout__dimmer{position:fixed;top:32px;bottom:0;left:0;right:0;background-color:rgba(117,22,22,.25);pointer-events:none}.theme-syndicate .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#2b0101;color:hsla(0,0%,100%,.8)}.theme-syndicate .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-syndicate .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-syndicate .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-syndicate .NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}.theme-syndicate .Input{position:relative;display:inline-block;width:120px;border:1px solid #87ce87;border:1px solid rgba(135,206,135,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:transparent}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:1px solid #87ce87;border:1px solid rgba(135,206,135,.75);border-radius:2px;color:#87ce87;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:6px}.theme-syndicate .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:1px solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:6px;border-bottom:2px solid #397439}.theme-syndicate .Section__titleText{font-size:14px;font-weight:700}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-syndicate .Section__content{padding:8px 6px}.theme-syndicate .Section--level--1 .Section__titleText{font-size:14px}.theme-syndicate .Section--level--2 .Section__titleText{font-size:13px}.theme-syndicate .Section--level--3 .Section__titleText{font-size:12px}.theme-syndicate .Section--level--2,.theme-syndicate .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-syndicate .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-syndicate .Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.theme-syndicate .Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#4a0202;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.theme-syndicate .Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.theme-syndicate .Tooltip--long:after{width:250px;white-space:normal}.theme-syndicate .Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.theme-syndicate .Tooltip--bottom:after,.theme-syndicate .Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.theme-syndicate .Tooltip--bottom:after{top:100%;left:50%}.theme-syndicate .Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.theme-syndicate .Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.theme-syndicate .Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.theme-syndicate .Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.theme-syndicate .Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.theme-syndicate .Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.theme-syndicate .Tooltip--left:hover:after,.theme-syndicate .Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.theme-syndicate .Tooltip--right:after{top:50%;left:100%}.theme-syndicate .Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.theme-syndicate .Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDIwMCAyODkuNzQyIiBvcGFjaXR5PSIuMzMiPjxwYXRoIGQ9Ik05My41MzggMGMtMTguMTEzIDAtMzQuMjIgMy4xMTItNDguMzI0IDkuMzM0LTEzLjk2NSA2LjIyMi0yNC42MTIgMTUuMDcyLTMxLjk0IDI2LjU0N0M2LjA4NCA0Ny4yMiAyLjk3MiA2MC42MzEgMi45NzIgNzYuMTE2YzAgMTAuNjQ3IDIuNzI1IDIwLjQ2NSA4LjE3NSAyOS40NTMgNS42MTYgOC45ODcgMTQuMDM5IDE3LjM1MiAyNS4yNyAyNS4wOTQgMTEuMjMgNy42MDYgMjYuNTA3IDE1LjQxOSA0NS44MyAyMy40MzggMTkuOTg0IDguMjk2IDM0Ljg0OSAxNS41NTUgNDQuNTkzIDIxLjc3NiA5Ljc0NCA2LjIyMyAxNi43NjEgMTIuODU5IDIxLjA1NSAxOS45MSA0LjI5NSA3LjA1MiA2LjQ0MiAxNS43NjQgNi40NDIgMjYuMTM0IDAgMTYuMTc4LTUuMjAyIDI4LjQ4My0xNS42MDYgMzYuOTE3LTEwLjI0IDguNDM1LTI1LjAyMiAxMi42NTMtNDQuMzQ1IDEyLjY1My0xNC4wMzkgMC0yNS41MTYtMS42Ni0zNC40MzQtNC45NzgtOC45MTgtMy40NTctMTYuMTg2LTguNzExLTIxLjgtMTUuNzYzLTUuNjE2LTcuMDUyLTEwLjA3Ni0xNi42NjEtMTMuMzc5LTI4LjgyOUgwdjU2LjgyN2MzMy44NTcgNy4zMjggNjMuNzQ5IDEwLjk5NCA4OS42NzggMTAuOTk0IDE2LjAyIDAgMzAuNzItMS4zODMgNDQuMDk4LTQuMTQ4IDEzLjU0Mi0yLjkwNCAyNS4xMDQtNy40NjcgMzQuNjgzLTEzLjY5IDkuNzQ0LTYuMzU5IDE3LjM0LTE0LjUxOSAyMi43OS0yNC40NzQgNS40NS0xMC4wOTMgOC4xNzUtMjIuNCA4LjE3NS0zNi45MTcgMC0xMi45OTctMy4zMDItMjQuMzM1LTkuOTA4LTM0LjAxNC02LjQ0LTkuODE4LTE1LjUyNS0xOC41MjctMjcuMjUxLTI2LjEzMi0xMS41NjEtNy42MDQtMjcuOTExLTE1LjgzMS00OS4wNTEtMjQuNjgtMTcuNTA2LTcuMTktMzAuNzItMTMuNjktMzkuNjM4LTE5LjQ5N1M1NC45NjkgOTMuNzU2IDQ5LjQ3OSA4Ny4zMTZjLTUuNDI2LTYuMzY2LTkuNjU4LTE1LjA3LTkuNjU4LTI0Ljg4NyAwLTkuMjY0IDIuMDc1LTE3LjIxNCA2LjIyMy0yMy44NUM1Ny4xNDIgMjQuMTggODcuMzMxIDM2Ljc4MiA5MS4xMiA2Mi45MjVjNC44NCA2Ljc3NSA4Ljg1IDE2LjI0NyAxMi4wMyAyOC40MTVoMjAuNTMydi01NmMtNC40NzktNS45MjQtOS45NTUtMTAuNjMxLTE1LjkwOS0xNC4zNzMgMS42NC40NzkgMy4xOSAxLjAyMyA0LjYzOSAxLjY0IDYuNDk4IDIuNjI2IDEyLjE2OCA3LjMyNyAxNy4wMDcgMTQuMTAzIDQuODQgNi43NzUgOC44NSAxNi4yNDYgMTIuMDMgMjguNDE0IDAgMCA4LjQ4LS4xMjkgOC40OS0uMDAyLjQxNyA2LjQxNS0xLjc1NCA5LjQ1My00LjEyNCAxMi41NjEtMi40MTcgMy4xNy01LjE0NSA2Ljc5LTQuMDAzIDEzLjAwMyAxLjUwOCA4LjIwMyAxMC4xODQgMTAuNTk3IDE0LjYyMiA5LjMxMi0zLjMxOC0uNS01LjMxOC0xLjc1LTUuMzE4LTEuNzVzMS44NzYuOTk5IDUuNjUtMS4zNmMtMy4yNzYuOTU2LTEwLjcwNC0uNzk3LTExLjgtNi43NjMtLjk1OC01LjIwOC45NDYtNy4yOTUgMy40LTEwLjUxNCAyLjQ1NS0zLjIyIDUuMjg1LTYuOTU5IDQuNjg1LTE0LjQ4OWwuMDAzLjAwMmg4LjkyN3YtNTZjLTE1LjA3Mi0zLjg3MS0yNy42NTMtNi4zNi0zNy43NDctNy40NjVDMTE0LjI3OS41NTIgMTA0LjA0NiAwIDkzLjUzNyAwem03MC4zMjEgMTcuMzA5bC4yMzggNDAuMzA1YzEuMzE4IDEuMjI2IDIuNDQgMi4yNzggMy4zNDEgMy4xMDYgNC44NCA2Ljc3NSA4Ljg1IDE2LjI0NiAxMi4wMyAyOC40MTRIMjAwdi01NmMtNi42NzctNC41OTQtMTkuODM2LTEwLjQ3My0zNi4xNC0xNS44MjV6bS0yOC4xMiA1LjYwNWw4LjU2NSAxNy43MTdjLTExLjk3LTYuNDY3LTEzLjg0Ny05LjcxNy04LjU2NS0xNy43MTd6bTIyLjc5NyAwYzIuNzcxIDggMS43ODcgMTEuMjUtNC40OTQgMTcuNzE3bDQuNDk0LTE3LjcxN3ptMTUuMjIyIDI0LjAwOWw4LjU2NSAxNy43MTZjLTExLjk3LTYuNDY2LTEzLjg0Ny05LjcxNy04LjU2NS0xNy43MTZ6bTIyLjc5NyAwYzIuNzcxIDggMS43ODcgMTEuMjUtNC40OTQgMTcuNzE2bDQuNDk0LTE3LjcxNnpNOTcuNDQgNDkuMTNsOC41NjUgMTcuNzE2Yy0xMS45Ny02LjQ2Ny0xMy44NDctOS43MTctOC41NjUtMTcuNzE2em0yMi43OTUgMGMyLjc3MiA3Ljk5OSAxLjc4OCAxMS4yNS00LjQ5MyAxNy43MTZsNC40OTMtMTcuNzE2eiIvPjwvc3ZnPg==)} \ No newline at end of file +body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#0d0d0d!important}.color-white{color:#fff!important}.color-red{color:#d33!important}.color-orange{color:#f37827!important}.color-yellow{color:#fbd814!important}.color-olive{color:#c0d919!important}.color-green{color:#22be47!important}.color-teal{color:#00c5bd!important}.color-blue{color:#238cdc!important}.color-violet{color:#6c3fcc!important}.color-purple{color:#a93bcd!important}.color-pink{color:#e2439c!important}.color-brown{color:#af6d43!important}.color-grey{color:#7d7d7d!important}.color-good{color:#62b62a!important}.color-average{color:#f1951d!important}.color-bad{color:#d33!important}.color-label{color:#8496ab!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.display-none{display:none}.display-block{display:block}.display-inline{display:inline}.display-inline-block{display:inline-block}.m-0{margin:0}.mx-0{margin-left:0;margin-right:0}.my-0{margin-top:0;margin-bottom:0}.ml-0{margin-left:0}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.m-1{margin:6px}.mx-1{margin-left:6px;margin-right:6px}.my-1{margin-top:6px;margin-bottom:6px}.ml-1{margin-left:6px}.mt-1{margin-top:6px}.mr-1{margin-right:6px}.mb-1{margin-bottom:6px}.m-2{margin:12px}.mx-2{margin-left:12px;margin-right:12px}.my-2{margin-top:12px;margin-bottom:12px}.ml-2{margin-left:12px}.mt-2{margin-top:12px}.mr-2{margin-right:12px}.mb-2{margin-bottom:12px}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8496ab;border-left:2px solid #8496ab;padding-left:6px}.Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0}.Button .fa,.Button .far,.Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:3px}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#252525;color:#fff;background-color:rgba(37,37,37,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#323232;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.Button--altSelected--bottom:after{left:0;height:2px;width:100%}.Button--altSelected--bottom:after,.Button--altSelected--right:after{content:"";position:absolute;bottom:0;right:0;background-color:#fff;border-radius:2px}.Button--altSelected--right:after{top:0;height:100%;width:3px}.CameraConsole__left{position:absolute;top:0;bottom:0;left:0;width:220px}.CameraConsole__right{position:absolute;top:0;bottom:0;left:220px;right:0;background-color:rgba(0,0,0,.33)}.CameraConsole__toolbar{left:0;margin:3px 12px 0}.CameraConsole__toolbar,.CameraConsole__toolbarRight{position:absolute;top:0;right:0;height:24px;line-height:24px}.CameraConsole__toolbarRight{margin:4px 6px 0}.CameraConsole__map{position:absolute;top:26px;bottom:0;left:0;right:0;margin:6px;text-align:center}.CameraConsole__map .NoticeBox{margin-top:calc(50% - 24px)}.ColorBox{display:inline-block;width:12px;height:12px;line-height:12px;text-align:center}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:12px;width:100px;line-height:17px;user-select:none}.Dropdown__arrow-button{float:right;padding-left:6px;border-left:1px solid #000;border-left:1px solid rgba(0,0,0,.25)}.Dropdown__menu{position:absolute;overflow-y:auto;z-index:5;width:100px;max-height:200px;overflow-y:scroll;border-radius:0 0 2px 2px;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menuentry{padding:2px 4px;font-family:Verdana,sans-serif;font-size:12px;line-height:17px;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:#444;transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--spacing--1{margin:-3px -3px 3px}.Flex--spacing--1>.Flex__item{margin:3px}.Flex--spacing--2{margin:-6px -6px 6px}.Flex--spacing--2>.Flex__item{margin:6px}.LabeledList{display:table;width:100%;width:calc(100% + 12px);border-collapse:collapse;border-spacing:0;margin:-3px -6px 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:3px 6px;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:60px}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:1px;padding-bottom:0}.Layout{bottom:0;right:0;color:#fff;background-color:#252525;background-image:linear-gradient(180deg,#2a2a2a 0,#202020)}.Layout,.Layout__titleBar{position:fixed;top:0;left:0}.Layout__titleBar{z-index:1;width:100%;height:32px}.Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#1c1c1c;scrollbar-face-color:#3b3b3b;scrollbar-3dlight-color:#252525;scrollbar-highlight-color:#252525;scrollbar-track-color:#1c1c1c;scrollbar-arrow-color:#929292;scrollbar-shadow-color:#3b3b3b}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Layout__dimmer{top:0;background-color:rgba(62,62,62,.25);pointer-events:none}.Layout__dimmer,.Layout__toast{position:fixed;bottom:0;left:0;right:0}.Layout__toast{font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#131313;color:hsla(0,0%,100%,.8)}.Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}.NtosHeader__left{position:absolute;left:12px}.NtosHeader__right{position:absolute;right:12px}.NtosHeader__icon{margin-top:-9px;margin-bottom:-6px;vertical-align:middle}.NtosWrapper__header{position:absolute;top:0;left:0;right:0;height:28px;line-height:27px;background-color:rgba(0,0,0,.5);font-family:Consolas,monospace;font-size:14px;user-select:none;-ms-user-select:none}.NtosWrapper__content .Layout__content{margin-top:28px;font-family:Consolas,monospace;font-size:14px}.NuclearBomb__displayBox{background-color:#002003;border:4px inset #e8e4c9;color:#03e017;font-size:24px;font-family:monospace;padding:6px}.NuclearBomb__Button--keypad{background-color:#e8e4c9;border-color:#e8e4c9}.NuclearBomb__Button--keypad:hover{background-color:#f7f6ee!important;border-color:#f7f6ee!important}.NuclearBomb__Button--1{background-color:#d3cfb7!important;border-color:#d3cfb7!important;color:#a9a692!important}.NuclearBomb__Button--E{background-color:#d9b804!important;border-color:#d9b804!important}.NuclearBomb__Button--E:hover{background-color:#f3d00e!important;border-color:#f3d00e!important}.NuclearBomb__Button--C{background-color:#bd2020!important;border-color:#bd2020!important}.NuclearBomb__Button--C:hover{background-color:#d52b2b!important;border-color:#d52b2b!important}.NuclearBomb__NTIcon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDQyNSAyMDAiIG9wYWNpdHk9Ii4zMyI+PHBhdGggZD0iTTE3OC4wMDQuMDM5SDEwNi44YTYuNzYxIDYuMDI2IDAgMDAtNi43NjEgNi4wMjV2MTg3Ljg3MmE2Ljc2MSA2LjAyNiAwIDAwNi43NjEgNi4wMjVoNTMuMTA3YTYuNzYxIDYuMDI2IDAgMDA2Ljc2Mi02LjAyNVY5Mi4zOTJsNzIuMjE2IDEwNC43YTYuNzYxIDYuMDI2IDAgMDA1Ljc2IDIuODdIMzE4LjJhNi43NjEgNi4wMjYgMCAwMDYuNzYxLTYuMDI2VjYuMDY0QTYuNzYxIDYuMDI2IDAgMDAzMTguMi4wNGgtNTQuNzE3YTYuNzYxIDYuMDI2IDAgMDAtNi43NiA2LjAyNXYxMDIuNjJMMTgzLjc2MyAyLjkwOWE2Ljc2MSA2LjAyNiAwIDAwLTUuNzYtMi44N3pNNC44NDUgMjIuMTA5QTEzLjQxMiAxMi41MDIgMCAwMTEzLjQ3OC4wMzloNjYuMTE4QTUuMzY1IDUgMCAwMTg0Ljk2IDUuMDR2NzkuODh6TTQyMC4xNTUgMTc3Ljg5MWExMy40MTIgMTIuNTAyIDAgMDEtOC42MzMgMjIuMDdoLTY2LjExOGE1LjM2NSA1IDAgMDEtNS4zNjUtNS4wMDF2LTc5Ljg4eiIvPjwvc3ZnPg==);background-size:70%;background-position:50%;background-repeat:no-repeat}.Input{position:relative;display:inline-block;width:120px;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.NumberInput{position:relative;display:inline-block;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:2px;color:#88bfff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:6px}.NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:2px;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.ProgressBar--color--default{border:1px solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:1px solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:1px solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:1px solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:1px solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:1px solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:1px solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:1px solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:1px solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:1px solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:1px solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:1px solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:1px solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:1px solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:1px solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:1px solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:1px solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:1px solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:1px solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Roulette{font-family:Palatino}.Roulette__board{display:table;width:100%;border-collapse:collapse;border:2px solid #fff;margin:0}.Roulette__board-row{padding:0;margin:0}.Roulette__board-cell{display:table-cell;padding:0;margin:0;border:2px solid #fff;font-family:Palatino}.Roulette__board-cell:first-child{padding-left:0}.Roulette__board-cell:last-child{padding-right:0}.Roulette__board-extrabutton{text-align:center;font-size:20px;font-weight:700;height:28px;border:none!important;margin:0!important;padding-top:4px!important;color:#fff!important}.Roulette__lowertable{margin-top:8px;margin-left:80px;margin-right:80px;border-collapse:collapse;border:2px solid #fff;border-spacing:0}.Roulette__lowertable--cell{border:2px solid #fff;padding:0;margin:0}.Roulette__lowertable--betscell{vertical-align:top}.Roulette__lowertable--spinresult{text-align:center;font-size:100px;font-weight:700;vertical-align:middle}.Roulette__lowertable--spinresult-black{background-color:#000}.Roulette__lowertable--spinresult-red{background-color:#db2828}.Roulette__lowertable--spinresult-green{background-color:#20b142}.Roulette__lowertable--spinbutton{margin:0!important;border:none!important;font-size:50px;line-height:60px!important;text-align:center;font-weight:700}.Roulette__lowertable--header{width:1%;text-align:center;font-size:20px;font-weight:700}.Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:6px;border-bottom:2px solid #4972a1}.Section__titleText{font-size:14px;font-weight:700}.Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.Section__content{padding:8px 6px}.Section--level--1 .Section__titleText{font-size:14px}.Section--level--2 .Section__titleText{font-size:13px}.Section--level--3 .Section__titleText{font-size:12px}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 3px}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:6px}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs__content{padding-top:6px;border-top:2px solid hsla(0,0%,100%,.1)}.Tabs--vertical{display:table-row}.Tabs--vertical>.Tabs__content{display:table-cell;width:100%;padding-top:0;padding-left:9px;border-top:0}.Tabs--vertical>.Tabs__tabBox{display:table-cell;border-right:2px solid hsla(0,0%,100%,.1);vertical-align:top}.Tabs--vertical>.Tabs__tabBox>.Tabs__tab{display:block!important;margin-right:0;margin-bottom:0;padding:1px 9px 0 6px;border-bottom:2px solid hsla(0,0%,100%,.1)}.Tabs--vertical>.Tabs__tabBox>.Tabs__tab:last-child{border-bottom:0}.TitleBar{background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#363636;transition:color .25s,background-color .25s}.TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.TitleBar__minimize{position:absolute;top:6px;right:46px}.TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:250px;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.Tooltip--bottom:after,.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.Tooltip--bottom:after{top:100%;left:50%}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDQyNSAyMDAiIG9wYWNpdHk9Ii4zMyI+PHBhdGggZD0iTTE3OC4wMDQuMDM5SDEwNi44YTYuNzYxIDYuMDI2IDAgMDAtNi43NjEgNi4wMjV2MTg3Ljg3MmE2Ljc2MSA2LjAyNiAwIDAwNi43NjEgNi4wMjVoNTMuMTA3YTYuNzYxIDYuMDI2IDAgMDA2Ljc2Mi02LjAyNVY5Mi4zOTJsNzIuMjE2IDEwNC43YTYuNzYxIDYuMDI2IDAgMDA1Ljc2IDIuODdIMzE4LjJhNi43NjEgNi4wMjYgMCAwMDYuNzYxLTYuMDI2VjYuMDY0QTYuNzYxIDYuMDI2IDAgMDAzMTguMi4wNGgtNTQuNzE3YTYuNzYxIDYuMDI2IDAgMDAtNi43NiA2LjAyNXYxMDIuNjJMMTgzLjc2MyAyLjkwOWE2Ljc2MSA2LjAyNiAwIDAwLTUuNzYtMi44N3pNNC44NDUgMjIuMTA5QTEzLjQxMiAxMi41MDIgMCAwMTEzLjQ3OC4wMzloNjYuMTE4QTUuMzY1IDUgMCAwMTg0Ljk2IDUuMDR2NzkuODh6TTQyMC4xNTUgMTc3Ljg5MWExMy40MTIgMTIuNTAyIDAgMDEtOC42MzMgMjIuMDdoLTY2LjExOGE1LjM2NSA1IDAgMDEtNS4zNjUtNS4wMDF2LTc5Ljg4eiIvPjwvc3ZnPg==);background-size:70%;background-position:50%;background-repeat:no-repeat}.theme-cardtable .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-cardtable .Button:last-child{margin-right:0}.theme-cardtable .Button .fa,.theme-cardtable .Button .far,.theme-cardtable .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-cardtable .Button--hasContent .fa,.theme-cardtable .Button--hasContent .far,.theme-cardtable .Button--hasContent .fas{margin-right:3px}.theme-cardtable .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-cardtable .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-cardtable .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff}.theme-cardtable .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--default:focus,.theme-cardtable .Button--color--default:hover{background-color:#1c8247;color:#fff}.theme-cardtable .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-cardtable .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--caution:focus,.theme-cardtable .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-cardtable .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-cardtable .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--danger:focus,.theme-cardtable .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-cardtable .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff;background-color:rgba(17,112,57,0);color:hsla(0,0%,100%,.5)}.theme-cardtable .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--color--transparent:focus,.theme-cardtable .Button--color--transparent:hover{background-color:#1c8247;color:#fff}.theme-cardtable .Button--disabled{background-color:#363636!important}.theme-cardtable .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-cardtable .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--selected:focus{transition:color .1s,background-color .1s}.theme-cardtable .Button--selected:focus,.theme-cardtable .Button--selected:hover{background-color:#b31212;color:#fff}.theme-cardtable .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-cardtable .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-cardtable .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#117039;background-image:linear-gradient(180deg,#117039 0,#117039)}.theme-cardtable .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-cardtable .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-cardtable .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#0d542b;scrollbar-face-color:#16914a;scrollbar-3dlight-color:#117039;scrollbar-highlight-color:#117039;scrollbar-track-color:#0d542b;scrollbar-arrow-color:#5ae695;scrollbar-shadow-color:#16914a}.theme-cardtable .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-cardtable .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(39,148,85,.25);pointer-events:none}.theme-cardtable .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#09381d;color:hsla(0,0%,100%,.8)}.theme-cardtable .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-cardtable .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-cardtable .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-cardtable .Input{position:relative;display:inline-block;width:120px;border:1px solid #88bfff;border:1px solid rgba(136,191,255,.75);border-radius:0;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-cardtable .Input--fluid{display:block;width:auto}.theme-cardtable .Input__baseline{display:inline-block;color:transparent}.theme-cardtable .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-cardtable .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-cardtable .NumberInput{position:relative;display:inline-block;border:1px solid #fff;border:1px solid hsla(0,0%,100%,.75);border-radius:0;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-cardtable .NumberInput--fluid{display:block}.theme-cardtable .NumberInput__content{margin-left:6px}.theme-cardtable .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-cardtable .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #fff;background-color:#fff}.theme-cardtable .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-cardtable .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-cardtable .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-cardtable .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-cardtable .ProgressBar--color--default{border:1px solid #000}.theme-cardtable .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-cardtable .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-cardtable .Section:last-child{margin-bottom:0}.theme-cardtable .Section__title{position:relative;padding:6px;border-bottom:2px solid #000}.theme-cardtable .Section__titleText{font-size:14px;font-weight:700}.theme-cardtable .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-cardtable .Section__content{padding:8px 6px}.theme-cardtable .Section--level--1 .Section__titleText{font-size:14px}.theme-cardtable .Section--level--2 .Section__titleText{font-size:13px}.theme-cardtable .Section--level--3 .Section__titleText{font-size:12px}.theme-cardtable .Section--level--2,.theme-cardtable .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-cardtable .TitleBar{background-color:#381608;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-cardtable .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#381608;transition:color .25s,background-color .25s}.theme-cardtable .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-cardtable .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-cardtable .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-cardtable .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-cardtable .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-cardtable .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-cardtable .Button{border:2px solid #fff}.theme-malfunction .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-malfunction .Button:last-child{margin-right:0}.theme-malfunction .Button .fa,.theme-malfunction .Button .far,.theme-malfunction .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-malfunction .Button--hasContent .fa,.theme-malfunction .Button--hasContent .far,.theme-malfunction .Button--hasContent .fas{margin-right:3px}.theme-malfunction .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-malfunction .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-malfunction .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#910101;color:#fff}.theme-malfunction .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--default:focus,.theme-malfunction .Button--color--default:hover{background-color:#a60b0b;color:#fff}.theme-malfunction .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-malfunction .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--caution:focus,.theme-malfunction .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-malfunction .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-malfunction .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--danger:focus,.theme-malfunction .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-malfunction .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1b3443;color:#fff;background-color:rgba(27,52,67,0);color:hsla(0,0%,100%,.5)}.theme-malfunction .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--color--transparent:focus,.theme-malfunction .Button--color--transparent:hover{background-color:#274252;color:#fff}.theme-malfunction .Button--disabled{background-color:#363636!important}.theme-malfunction .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1e5881;color:#fff}.theme-malfunction .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--selected:focus{transition:color .1s,background-color .1s}.theme-malfunction .Button--selected:focus,.theme-malfunction .Button--selected:hover{background-color:#2a6894;color:#fff}.theme-malfunction .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:2px}.theme-malfunction .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:2px}.theme-malfunction .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b3443;background-image:linear-gradient(180deg,#244559 0,#12232d)}.theme-malfunction .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-malfunction .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-malfunction .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#142732;scrollbar-face-color:#274b61;scrollbar-3dlight-color:#1b3443;scrollbar-highlight-color:#1b3443;scrollbar-track-color:#142732;scrollbar-arrow-color:#6ba2c3;scrollbar-shadow-color:#274b61}.theme-malfunction .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-malfunction .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,79,96,.25);pointer-events:none}.theme-malfunction .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#0e1a22;color:hsla(0,0%,100%,.8)}.theme-malfunction .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-malfunction .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-malfunction .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-malfunction .NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#1a3f57;background-image:repeating-linear-gradient(-45deg,#1a3f57,#1a3f57 10px,#1a3f57 0,#1a3f57 20px)}.theme-malfunction .Input{position:relative;display:inline-block;width:120px;border:1px solid #910101;border:1px solid rgba(145,1,1,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-malfunction .Input--fluid{display:block;width:auto}.theme-malfunction .Input__baseline{display:inline-block;color:transparent}.theme-malfunction .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-malfunction .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-malfunction .NumberInput{position:relative;display:inline-block;border:1px solid #910101;border:1px solid rgba(145,1,1,.75);border-radius:2px;color:#910101;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-malfunction .NumberInput--fluid{display:block}.theme-malfunction .NumberInput__content{margin-left:6px}.theme-malfunction .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-malfunction .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #910101;background-color:#910101}.theme-malfunction .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-malfunction .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-malfunction .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-malfunction .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-malfunction .ProgressBar--color--default{border:1px solid #7b0101}.theme-malfunction .ProgressBar--color--default .ProgressBar__fill{background-color:#7b0101}.theme-malfunction .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-malfunction .Section:last-child{margin-bottom:0}.theme-malfunction .Section__title{position:relative;padding:6px;border-bottom:2px solid #910101}.theme-malfunction .Section__titleText{font-size:14px;font-weight:700}.theme-malfunction .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-malfunction .Section__content{padding:8px 6px}.theme-malfunction .Section--level--1 .Section__titleText{font-size:14px}.theme-malfunction .Section--level--2 .Section__titleText{font-size:13px}.theme-malfunction .Section--level--3 .Section__titleText{font-size:12px}.theme-malfunction .Section--level--2,.theme-malfunction .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-malfunction .TitleBar{background-color:#1a3f57;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-malfunction .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#1a3f57;transition:color .25s,background-color .25s}.theme-malfunction .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-malfunction .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-malfunction .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-malfunction .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-malfunction .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-malfunction .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-malfunction .Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.theme-malfunction .Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#235577;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.theme-malfunction .Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.theme-malfunction .Tooltip--long:after{width:250px;white-space:normal}.theme-malfunction .Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.theme-malfunction .Tooltip--bottom:after,.theme-malfunction .Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.theme-malfunction .Tooltip--bottom:after{top:100%;left:50%}.theme-malfunction .Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.theme-malfunction .Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.theme-malfunction .Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.theme-malfunction .Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.theme-malfunction .Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.theme-malfunction .Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.theme-malfunction .Tooltip--left:hover:after,.theme-malfunction .Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.theme-malfunction .Tooltip--right:after{top:50%;left:100%}.theme-malfunction .Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.theme-malfunction .Layout__content{background-image:none}.theme-ntos .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0}.theme-ntos .Button .fa,.theme-ntos .Button .far,.theme-ntos .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .far,.theme-ntos .Button--hasContent .fas{margin-right:3px}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--default:focus,.theme-ntos .Button--color--default:hover{background-color:#465e7a;color:#fff}.theme-ntos .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--caution:focus,.theme-ntos .Button--color--caution:hover{background-color:#f3d00e;color:#000}.theme-ntos .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--danger:focus,.theme-ntos .Button--color--danger:hover{background-color:#d52b2b;color:#fff}.theme-ntos .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1f2b39;color:#fff;background-color:rgba(31,43,57,0);color:rgba(227,240,255,.75)}.theme-ntos .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--color--transparent:focus,.theme-ntos .Button--color--transparent:hover{background-color:#2b3847;color:#fff}.theme-ntos .Button--disabled{background-color:#999!important}.theme-ntos .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--selected:focus{transition:color .1s,background-color .1s}.theme-ntos .Button--selected:focus,.theme-ntos .Button--selected:hover{background-color:#27ab46;color:#fff}.theme-ntos .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:2px}.theme-ntos .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:2px}.theme-ntos .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1f2b39;background-image:linear-gradient(180deg,#223040 0,#1b2633)}.theme-ntos .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-ntos .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#17202b;scrollbar-face-color:#2e3f55;scrollbar-3dlight-color:#1f2b39;scrollbar-highlight-color:#1f2b39;scrollbar-track-color:#17202b;scrollbar-arrow-color:#7693b5;scrollbar-shadow-color:#2e3f55}.theme-ntos .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-ntos .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(55,69,85,.25);pointer-events:none}.theme-ntos .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#0f151d;color:hsla(0,0%,100%,.8)}.theme-ntos .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-ntos .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-ntos .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:1px solid #384e68}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#384e68}.theme-ntos .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:6px;border-bottom:2px solid #4972a1}.theme-ntos .Section__titleText{font-size:14px;font-weight:700}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-ntos .Section__content{padding:8px 6px}.theme-ntos .Section--level--1 .Section__titleText{font-size:14px}.theme-ntos .Section--level--2 .Section__titleText{font-size:13px}.theme-ntos .Section--level--3 .Section__titleText{font-size:12px}.theme-ntos .Section--level--2,.theme-ntos .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-ntos .TitleBar{background-color:#2a3b4e;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#2a3b4e;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-ntos .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-hackerman .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-hackerman .Button:last-child{margin-right:0}.theme-hackerman .Button .fa,.theme-hackerman .Button .far,.theme-hackerman .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-hackerman .Button--hasContent .fa,.theme-hackerman .Button--hasContent .far,.theme-hackerman .Button--hasContent .fas{margin-right:3px}.theme-hackerman .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-hackerman .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-hackerman .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#0f0;color:#000}.theme-hackerman .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--default:focus,.theme-hackerman .Button--color--default:hover{background-color:#26ff26;color:#000}.theme-hackerman .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-hackerman .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--caution:focus,.theme-hackerman .Button--color--caution:hover{background-color:#f3d00e;color:#000}.theme-hackerman .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-hackerman .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--danger:focus,.theme-hackerman .Button--color--danger:hover{background-color:#d52b2b;color:#fff}.theme-hackerman .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#121b12;color:#fff;background-color:rgba(18,27,18,0);color:hsla(0,0%,100%,.5)}.theme-hackerman .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--color--transparent:focus,.theme-hackerman .Button--color--transparent:hover{background-color:#1d271d;color:#fff}.theme-hackerman .Button--disabled{background-color:#4a6a4a!important}.theme-hackerman .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0f0;color:#000}.theme-hackerman .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--selected:focus{transition:color .1s,background-color .1s}.theme-hackerman .Button--selected:focus,.theme-hackerman .Button--selected:hover{background-color:#26ff26;color:#000}.theme-hackerman .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:2px}.theme-hackerman .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:2px}.theme-hackerman .Input{position:relative;display:inline-block;width:120px;border:1px solid #0f0;border:1px solid rgba(0,255,0,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-hackerman .Input--fluid{display:block;width:auto}.theme-hackerman .Input__baseline{display:inline-block;color:transparent}.theme-hackerman .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-hackerman .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-hackerman .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#121b12;background-image:linear-gradient(180deg,#121b12 0,#121b12)}.theme-hackerman .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-hackerman .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-hackerman .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#0e140e;scrollbar-face-color:#253725;scrollbar-3dlight-color:#121b12;scrollbar-highlight-color:#121b12;scrollbar-track-color:#0e140e;scrollbar-arrow-color:#74a274;scrollbar-shadow-color:#253725}.theme-hackerman .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-hackerman .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(40,50,40,.25);pointer-events:none}.theme-hackerman .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#090e09;color:hsla(0,0%,100%,.8)}.theme-hackerman .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-hackerman .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-hackerman .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-hackerman .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-hackerman .Section:last-child{margin-bottom:0}.theme-hackerman .Section__title{position:relative;padding:6px;border-bottom:2px solid #0f0}.theme-hackerman .Section__titleText{font-size:14px;font-weight:700}.theme-hackerman .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-hackerman .Section__content{padding:8px 6px}.theme-hackerman .Section--level--1 .Section__titleText{font-size:14px}.theme-hackerman .Section--level--2 .Section__titleText{font-size:13px}.theme-hackerman .Section--level--3 .Section__titleText{font-size:12px}.theme-hackerman .Section--level--2,.theme-hackerman .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-hackerman .TitleBar{background-color:#223d22;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-hackerman .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#223d22;transition:color .25s,background-color .25s}.theme-hackerman .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-hackerman .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-hackerman .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-hackerman .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-hackerman .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-hackerman .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-hackerman .Layout__content{background-image:none}.theme-hackerman .Button{font-family:monospace;border:2px outset #0a0;outline:1px solid #007a00}.theme-hackerman .candystripe:nth-child(odd){background-color:rgba(0,100,0,.5)}.theme-retro .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:0;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-retro .Button:last-child{margin-right:0}.theme-retro .Button .fa,.theme-retro .Button .far,.theme-retro .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-retro .Button--hasContent .fa,.theme-retro .Button--hasContent .far,.theme-retro .Button--hasContent .fas{margin-right:3px}.theme-retro .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-retro .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-retro .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000}.theme-retro .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--default:focus,.theme-retro .Button--color--default:hover{background-color:#f7f6ee;color:#000}.theme-retro .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-retro .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--caution:focus,.theme-retro .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-retro .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-retro .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--danger:focus,.theme-retro .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-retro .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000;background-color:rgba(232,228,201,0);color:hsla(0,0%,100%,.5)}.theme-retro .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-retro .Button--color--transparent:focus,.theme-retro .Button--color--transparent:hover{background-color:#f7f6ee;color:#000}.theme-retro .Button--disabled{background-color:#363636!important}.theme-retro .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-retro .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--selected:focus{transition:color .1s,background-color .1s}.theme-retro .Button--selected:focus,.theme-retro .Button--selected:hover{background-color:#b31212;color:#fff}.theme-retro .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:0}.theme-retro .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:0}.theme-retro .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#e8e4c9;background-image:linear-gradient(180deg,#e8e4c9 0,#e8e4c9)}.theme-retro .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-retro .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-retro .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#c8be7d;scrollbar-face-color:#eae7ce;scrollbar-3dlight-color:#e8e4c9;scrollbar-highlight-color:#e8e4c9;scrollbar-track-color:#c8be7d;scrollbar-arrow-color:#f4f2e4;scrollbar-shadow-color:#eae7ce}.theme-retro .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-retro .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(251,250,246,.25);pointer-events:none}.theme-retro .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#988d41;color:hsla(0,0%,100%,.8)}.theme-retro .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-retro .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-retro .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-retro .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-retro .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-retro .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-retro .ProgressBar--color--default{border:1px solid #000}.theme-retro .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-retro .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-retro .Section:last-child{margin-bottom:0}.theme-retro .Section__title{position:relative;padding:6px;border-bottom:2px solid #000}.theme-retro .Section__titleText{font-size:14px;font-weight:700}.theme-retro .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-retro .Section__content{padding:8px 6px}.theme-retro .Section--level--1 .Section__titleText{font-size:14px}.theme-retro .Section--level--2 .Section__titleText{font-size:13px}.theme-retro .Section--level--3 .Section__titleText{font-size:12px}.theme-retro .Section--level--2,.theme-retro .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-retro .TitleBar{background-color:#585337;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-retro .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#585337;transition:color .25s,background-color .25s}.theme-retro .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-retro .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-retro .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-retro .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-retro .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-retro .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-retro .Button{font-family:monospace;color:#161613;border:8px outset #e8e4c9;outline:3px solid #161613}.theme-retro .Layout__content{background-image:none}.theme-syndicate .Button{position:relative;display:inline-block;line-height:20px;padding:0 6px;margin-right:2px;white-space:nowrap;outline:0;border-radius:2px;margin-bottom:2px;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .far,.theme-syndicate .Button .fas{margin-left:-3px;margin-right:-3px;min-width:16px;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .far,.theme-syndicate .Button--hasContent .fas{margin-right:3px}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--default:focus,.theme-syndicate .Button--color--default:hover{background-color:#478647;color:#fff}.theme-syndicate .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--caution:focus,.theme-syndicate .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-syndicate .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--danger:focus,.theme-syndicate .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-syndicate .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#550202;color:#fff;background-color:rgba(85,2,2,0);color:hsla(0,0%,100%,.5)}.theme-syndicate .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--color--transparent:focus,.theme-syndicate .Button--color--transparent:hover{background-color:#650c0c;color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important}.theme-syndicate .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--selected:focus{transition:color .1s,background-color .1s}.theme-syndicate .Button--selected:focus,.theme-syndicate .Button--selected:hover{background-color:#b31212;color:#fff}.theme-syndicate .Button--altSelected--bottom:after{content:"";position:absolute;bottom:0;right:0;left:0;height:2px;width:100%;background-color:#fff;border-radius:2px}.theme-syndicate .Button--altSelected--right:after{content:"";position:absolute;top:0;bottom:0;right:0;height:100%;width:3px;background-color:#fff;border-radius:2px}.theme-syndicate .Layout{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#550202;background-image:linear-gradient(180deg,#730303 0,#370101)}.theme-syndicate .Layout__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px}.theme-syndicate .Layout__rest{position:fixed;top:32px;bottom:0;left:0;right:0}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden;margin-bottom:-6px;scrollbar-base-color:#400202;scrollbar-face-color:#7e0303;scrollbar-3dlight-color:#550202;scrollbar-highlight-color:#550202;scrollbar-track-color:#400202;scrollbar-arrow-color:#fa3030;scrollbar-shadow-color:#7e0303}.theme-syndicate .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-syndicate .Layout__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(117,22,22,.25);pointer-events:none}.theme-syndicate .Layout__toast{position:fixed;bottom:0;left:0;right:0;font-size:12px;height:40px;line-height:39px;padding:0 12px;background-color:#2b0101;color:hsla(0,0%,100%,.8)}.theme-syndicate .Layout__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;height:20px;cursor:se-resize}.theme-syndicate .Layout__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;cursor:s-resize}.theme-syndicate .Layout__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;cursor:e-resize}.theme-syndicate .NoticeBox{padding:4px 6px;margin-bottom:6px;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}.theme-syndicate .Input{position:relative;display:inline-block;width:120px;border:1px solid #87ce87;border:1px solid rgba(135,206,135,.75);border-radius:2px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:transparent}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:1px solid #87ce87;border:1px solid rgba(135,206,135,.75);border-radius:2px;color:#87ce87;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 4px;margin-right:2px;line-height:17px;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:6px}.theme-syndicate .NumberInput__barContainer{position:absolute;top:2px;bottom:2px;left:2px}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:3px;box-sizing:border-box;border-bottom:1px solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:#000;color:#fff;text-align:right}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 6px;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:0;left:0;bottom:0;transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:17px;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:1px solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .Section{position:relative;margin-bottom:6px;background-color:#1a1a1a;background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5);box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:6px;border-bottom:2px solid #397439}.theme-syndicate .Section__titleText{font-size:14px;font-weight:700}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:6px;margin-top:-1px}.theme-syndicate .Section__content{padding:8px 6px}.theme-syndicate .Section--level--1 .Section__titleText{font-size:14px}.theme-syndicate .Section--level--2 .Section__titleText{font-size:13px}.theme-syndicate .Section--level--3 .Section__titleText{font-size:12px}.theme-syndicate .Section--level--2,.theme-syndicate .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-6px;margin-right:-6px}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:hsla(0,0%,100%,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;color:hsla(0,0%,100%,.75);font-size:14px;line-height:31px;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;transition:color .5s;font-size:20px;line-height:32px!important}.theme-syndicate .TitleBar__minimize{position:absolute;top:6px;right:46px}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;height:32px;font-size:20px;line-height:31px;text-align:center}.theme-syndicate .Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.theme-syndicate .Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:6px 10px;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#4a0202;box-shadow:1px 1px 15px -1px rgba(0,0,0,.5);border-radius:2px}.theme-syndicate .Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.theme-syndicate .Tooltip--long:after{width:250px;white-space:normal}.theme-syndicate .Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(8px)}.theme-syndicate .Tooltip--bottom:after,.theme-syndicate .Tooltip--top:hover:after{transform:translateX(-50%) translateY(-8px)}.theme-syndicate .Tooltip--bottom:after{top:100%;left:50%}.theme-syndicate .Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(8px)}.theme-syndicate .Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-8px)}.theme-syndicate .Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(8px)}.theme-syndicate .Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-8px)}.theme-syndicate .Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(8px)}.theme-syndicate .Tooltip--left:after{top:50%;right:100%;transform:translateX(8px) translateY(-50%)}.theme-syndicate .Tooltip--left:hover:after,.theme-syndicate .Tooltip--right:after{transform:translateX(-8px) translateY(-50%)}.theme-syndicate .Tooltip--right:after{top:50%;left:100%}.theme-syndicate .Tooltip--right:hover:after{transform:translateX(8px) translateY(-50%)}.theme-syndicate .Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDIwMCAyODkuNzQyIiBvcGFjaXR5PSIuMzMiPjxwYXRoIGQ9Ik05My41MzggMGMtMTguMTEzIDAtMzQuMjIgMy4xMTItNDguMzI0IDkuMzM0LTEzLjk2NSA2LjIyMi0yNC42MTIgMTUuMDcyLTMxLjk0IDI2LjU0N0M2LjA4NCA0Ny4yMiAyLjk3MiA2MC42MzEgMi45NzIgNzYuMTE2YzAgMTAuNjQ3IDIuNzI1IDIwLjQ2NSA4LjE3NSAyOS40NTMgNS42MTYgOC45ODcgMTQuMDM5IDE3LjM1MiAyNS4yNyAyNS4wOTQgMTEuMjMgNy42MDYgMjYuNTA3IDE1LjQxOSA0NS44MyAyMy40MzggMTkuOTg0IDguMjk2IDM0Ljg0OSAxNS41NTUgNDQuNTkzIDIxLjc3NiA5Ljc0NCA2LjIyMyAxNi43NjEgMTIuODU5IDIxLjA1NSAxOS45MSA0LjI5NSA3LjA1MiA2LjQ0MiAxNS43NjQgNi40NDIgMjYuMTM0IDAgMTYuMTc4LTUuMjAyIDI4LjQ4My0xNS42MDYgMzYuOTE3LTEwLjI0IDguNDM1LTI1LjAyMiAxMi42NTMtNDQuMzQ1IDEyLjY1My0xNC4wMzkgMC0yNS41MTYtMS42Ni0zNC40MzQtNC45NzgtOC45MTgtMy40NTctMTYuMTg2LTguNzExLTIxLjgtMTUuNzYzLTUuNjE2LTcuMDUyLTEwLjA3Ni0xNi42NjEtMTMuMzc5LTI4LjgyOUgwdjU2LjgyN2MzMy44NTcgNy4zMjggNjMuNzQ5IDEwLjk5NCA4OS42NzggMTAuOTk0IDE2LjAyIDAgMzAuNzItMS4zODMgNDQuMDk4LTQuMTQ4IDEzLjU0Mi0yLjkwNCAyNS4xMDQtNy40NjcgMzQuNjgzLTEzLjY5IDkuNzQ0LTYuMzU5IDE3LjM0LTE0LjUxOSAyMi43OS0yNC40NzQgNS40NS0xMC4wOTMgOC4xNzUtMjIuNCA4LjE3NS0zNi45MTcgMC0xMi45OTctMy4zMDItMjQuMzM1LTkuOTA4LTM0LjAxNC02LjQ0LTkuODE4LTE1LjUyNS0xOC41MjctMjcuMjUxLTI2LjEzMi0xMS41NjEtNy42MDQtMjcuOTExLTE1LjgzMS00OS4wNTEtMjQuNjgtMTcuNTA2LTcuMTktMzAuNzItMTMuNjktMzkuNjM4LTE5LjQ5N1M1NC45NjkgOTMuNzU2IDQ5LjQ3OSA4Ny4zMTZjLTUuNDI2LTYuMzY2LTkuNjU4LTE1LjA3LTkuNjU4LTI0Ljg4NyAwLTkuMjY0IDIuMDc1LTE3LjIxNCA2LjIyMy0yMy44NUM1Ny4xNDIgMjQuMTggODcuMzMxIDM2Ljc4MiA5MS4xMiA2Mi45MjVjNC44NCA2Ljc3NSA4Ljg1IDE2LjI0NyAxMi4wMyAyOC40MTVoMjAuNTMydi01NmMtNC40NzktNS45MjQtOS45NTUtMTAuNjMxLTE1LjkwOS0xNC4zNzMgMS42NC40NzkgMy4xOSAxLjAyMyA0LjYzOSAxLjY0IDYuNDk4IDIuNjI2IDEyLjE2OCA3LjMyNyAxNy4wMDcgMTQuMTAzIDQuODQgNi43NzUgOC44NSAxNi4yNDYgMTIuMDMgMjguNDE0IDAgMCA4LjQ4LS4xMjkgOC40OS0uMDAyLjQxNyA2LjQxNS0xLjc1NCA5LjQ1My00LjEyNCAxMi41NjEtMi40MTcgMy4xNy01LjE0NSA2Ljc5LTQuMDAzIDEzLjAwMyAxLjUwOCA4LjIwMyAxMC4xODQgMTAuNTk3IDE0LjYyMiA5LjMxMi0zLjMxOC0uNS01LjMxOC0xLjc1LTUuMzE4LTEuNzVzMS44NzYuOTk5IDUuNjUtMS4zNmMtMy4yNzYuOTU2LTEwLjcwNC0uNzk3LTExLjgtNi43NjMtLjk1OC01LjIwOC45NDYtNy4yOTUgMy40LTEwLjUxNCAyLjQ1NS0zLjIyIDUuMjg1LTYuOTU5IDQuNjg1LTE0LjQ4OWwuMDAzLjAwMmg4LjkyN3YtNTZjLTE1LjA3Mi0zLjg3MS0yNy42NTMtNi4zNi0zNy43NDctNy40NjVDMTE0LjI3OS41NTIgMTA0LjA0NiAwIDkzLjUzNyAwem03MC4zMjEgMTcuMzA5bC4yMzggNDAuMzA1YzEuMzE4IDEuMjI2IDIuNDQgMi4yNzggMy4zNDEgMy4xMDYgNC44NCA2Ljc3NSA4Ljg1IDE2LjI0NiAxMi4wMyAyOC40MTRIMjAwdi01NmMtNi42NzctNC41OTQtMTkuODM2LTEwLjQ3My0zNi4xNC0xNS44MjV6bS0yOC4xMiA1LjYwNWw4LjU2NSAxNy43MTdjLTExLjk3LTYuNDY3LTEzLjg0Ny05LjcxNy04LjU2NS0xNy43MTd6bTIyLjc5NyAwYzIuNzcxIDggMS43ODcgMTEuMjUtNC40OTQgMTcuNzE3bDQuNDk0LTE3LjcxN3ptMTUuMjIyIDI0LjAwOWw4LjU2NSAxNy43MTZjLTExLjk3LTYuNDY2LTEzLjg0Ny05LjcxNy04LjU2NS0xNy43MTZ6bTIyLjc5NyAwYzIuNzcxIDggMS43ODcgMTEuMjUtNC40OTQgMTcuNzE2bDQuNDk0LTE3LjcxNnpNOTcuNDQgNDkuMTNsOC41NjUgMTcuNzE2Yy0xMS45Ny02LjQ2Ny0xMy44NDctOS43MTctOC41NjUtMTcuNzE2em0yMi43OTUgMGMyLjc3MiA3Ljk5OSAxLjc4OCAxMS4yNS00LjQ5MyAxNy43MTZsNC40OTMtMTcuNzE2eiIvPjwvc3ZnPg==)} \ No newline at end of file diff --git a/tgui/packages/tgui/public/tgui.bundle.js b/tgui/packages/tgui/public/tgui.bundle.js index fd7f239e3dd..6783b68819c 100644 --- a/tgui/packages/tgui/public/tgui.bundle.js +++ b/tgui/packages/tgui/public/tgui.bundle.js @@ -1,3 +1,3 @@ -!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=165)}([function(e,t,n){"use strict";t.__esModule=!0;var o=n(388);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=o[e])}))},function(e,t,n){"use strict";var o=n(5),r=n(21).f,a=n(26),i=n(24),c=n(89),l=n(124),u=n(61);e.exports=function(e,t){var n,d,s,p,m,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(d in t){if(p=t[d],s=e.noTargetGet?(m=r(n,d))&&m.value:n[d],!u(h?d:f+(C?".":"#")+d,e.forced)&&s!==undefined){if(typeof p==typeof s)continue;l(p,s)}(e.sham||s&&s.sham)&&a(p,"sham",!0),i(n,d,p,e)}}},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=t.Tooltip=t.Toast=t.TitleBar=t.Tabs=t.Table=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.LabeledList=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.Dimmer=t.Collapsible=t.ColorBox=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var o=n(159);t.AnimatedNumber=o.AnimatedNumber;var r=n(395);t.BlockQuote=r.BlockQuote;var a=n(20);t.Box=a.Box;var i=n(116);t.Button=i.Button;var c=n(397);t.ColorBox=c.ColorBox;var l=n(398);t.Collapsible=l.Collapsible;var u=n(399);t.Dimmer=u.Dimmer;var d=n(400);t.Dropdown=d.Dropdown;var s=n(401);t.Flex=s.Flex;var p=n(162);t.Grid=p.Grid;var m=n(87);t.Icon=m.Icon;var f=n(161);t.Input=f.Input;var h=n(118);t.LabeledList=h.LabeledList;var C=n(402);t.NoticeBox=C.NoticeBox;var b=n(403);t.NumberInput=b.NumberInput;var g=n(404);t.ProgressBar=g.ProgressBar;var N=n(405);t.Section=N.Section;var v=n(163);t.Table=v.Table;var V=n(406);t.Tabs=V.Tabs;var y=n(407);t.TitleBar=y.TitleBar;var _=n(114);t.Toast=_.Toast;var k=n(160);t.Tooltip=k.Tooltip;var x=n(408);t.Chart=x.Chart},function(e,t,n){"use strict";t.__esModule=!0,t.useBackend=t.backendReducer=t.backendUpdate=void 0;var o=n(37),r=n(15);t.backendUpdate=function(e){return{type:"backendUpdate",payload:e}};t.backendReducer=function(e,t){var n=t.type,r=t.payload;if("backendUpdate"===n){var a=Object.assign({},e.config,{},r.config),i=Object.assign({},e.data,{},r.static_data,{},r.data),c=a.status!==o.UI_DISABLED,l=a.status===o.UI_INTERACTIVE;return Object.assign({},e,{config:a,data:i,visible:c,interactive:l})}return e};t.useBackend=function(e){var t=e.state,n=(e.dispatch,t.config.ref);return Object.assign({},t,{act:function(e,t){return void 0===t&&(t={}),(0,r.act)(n,e,t)}})}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(120))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var o,r=n(9),a=n(5),i=n(6),c=n(16),l=n(74),u=n(26),d=n(24),s=n(13).f,p=n(36),m=n(53),f=n(12),h=n(58),C=a.DataView,b=C&&C.prototype,g=a.Int8Array,N=g&&g.prototype,v=a.Uint8ClampedArray,V=v&&v.prototype,y=g&&p(g),_=N&&p(N),k=Object.prototype,x=k.isPrototypeOf,L=f("toStringTag"),B=h("TYPED_ARRAY_TAG"),w=!(!a.ArrayBuffer||!C),S=w&&!!m&&"Opera"!==l(a.opera),I=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},A=function(e){var t=l(e);return"DataView"===t||c(T,t)},P=function(e){return i(e)&&c(T,l(e))};for(o in T)a[o]||(S=!1);if((!S||"function"!=typeof y||y===Function.prototype)&&(y=function(){throw TypeError("Incorrect invocation")},S))for(o in T)a[o]&&m(a[o],y);if((!S||!_||_===k)&&(_=y.prototype,S))for(o in T)a[o]&&m(a[o].prototype,_);if(S&&p(V)!==_&&m(V,_),r&&!c(_,L))for(o in I=!0,s(_,L,{get:function(){return i(this)?this[B]:undefined}}),T)a[o]&&u(a[o],B,o);w&&m&&p(b)!==k&&m(b,k),e.exports={NATIVE_ARRAY_BUFFER:w,NATIVE_ARRAY_BUFFER_VIEWS:S,TYPED_ARRAY_TAG:I&&B,aTypedArray:function(e){if(P(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(m){if(x.call(y,e))return e}else for(var t in T)if(c(T,o)){var n=a[t];if(n&&(e===n||x.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(r){if(n)for(var o in T){var i=a[o];i&&c(i.prototype,e)&&delete i.prototype[e]}_[e]&&!n||d(_,e,n?t:S&&N[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var o,i;if(r){if(m){if(n)for(o in T)(i=a[o])&&c(i,e)&&delete i[e];if(y[e]&&!n)return;try{return d(y,e,n?t:S&&g[e]||t)}catch(l){}}for(o in T)!(i=a[o])||i[e]&&!n||d(i,e,t)}},isView:A,isTypedArray:P,TypedArray:y,TypedArrayPrototype:_}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(5),r=n(91),a=n(16),i=n(58),c=n(95),l=n(127),u=r("wks"),d=o.Symbol,s=l?d:i;e.exports=function(e){return a(u,e)||(c&&a(d,e)?u[e]=d[e]:u[e]=s("Symbol."+e)),u[e]}},function(e,t,n){"use strict";var o=n(9),r=n(121),a=n(8),i=n(33),c=Object.defineProperty;t.f=o?c:function(e,t,n){if(a(e),t=i(t,!0),a(n),r)try{return c(e,t,n)}catch(o){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";var o=n(23);e.exports=function(e){return Object(o(e))}},function(e,t,n){"use strict";t.__esModule=!0,t.winset=t.winget=t.act=t.runCommand=t.callByondAsync=t.callByond=t.tridentVersion=void 0;var o,r=n(22),a=(o=navigator.userAgent.match(/Trident\/(\d+).+?;/i)[1])?parseInt(o,10):null;t.tridentVersion=a;var i=function(e,t){return void 0===t&&(t={}),"byond://"+e+"?"+(0,r.buildQueryString)(t)},c=function(e,t){void 0===t&&(t={}),window.location.href=i(e,t)};t.callByond=c;var l=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,o=new Promise((function(e){window.__callbacks__.push(e)}));return window.location.href=i(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),o};t.callByondAsync=l;t.runCommand=function(e){return c("winset",{command:e})};t.act=function(e,t,n){return void 0===n&&(n={}),c("",Object.assign({src:e,action:t},n))};var u=function(e,t){var n;return regeneratorRuntime.async((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,regeneratorRuntime.awrap(l("winget",{id:e,property:t}));case 2:return n=o.sent,o.abrupt("return",n[t]);case 4:case"end":return o.stop()}}))};t.winget=u;t.winset=function(e,t,n){var o;return c("winset",((o={})[e+"."+t]=n,o))}},function(e,t,n){"use strict";var o={}.hasOwnProperty;e.exports=function(e,t){return o.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.reduce=t.sortBy=t.map=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var o in e)t.call(e,o)&&n.push(e[o]);return n}return[]};var o=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],o=0;oc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n_;_++)if((p||_ in v)&&(g=V(b=v[_],_,N),e))if(t)x[_]=g;else if(g)switch(e){case 3:return!0;case 5:return b;case 6:return _;case 2:l.call(x,b)}else if(d)return!1;return s?-1:u||d?d:x}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.Box=t.computeBoxProps=t.unit=void 0;var o=n(0),r=n(10),a=n(396),i=n(37);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){return"string"==typeof e?e:"number"==typeof e?6*e+"px":void 0};t.unit=l;var u=function(e){return"string"==typeof e&&i.CSS_COLORS.includes(e)},d=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=n)}},s=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=l(n))}},p=function(e,t){return function(n,o){(0,r.isFalsy)(o)||(n[e]=t)}},m=function(e,t){return function(n,o){if(!(0,r.isFalsy)(o))for(var a=0;a0&&(t.style=l),t};t.computeBoxProps=C;var b=function(e){var t=e.as,n=void 0===t?"div":t,i=e.className,l=e.content,d=e.children,s=c(e,["as","className","content","children"]),p=e.textColor||e.color,m=e.backgroundColor;if("function"==typeof d)return d(C(e));var f=C(s);return(0,o.createVNode)(a.VNodeFlags.HtmlElement,n,(0,r.classes)([i,u(p)&&"color-"+p,u(m)&&"color-bg-"+m]),l||d,a.ChildFlags.UnknownChildren,f)};t.Box=b,b.defaultHooks=r.pureComponentHooks;var g=function(e){var t=e.children,n=c(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,b,Object.assign({position:"relative"},n,{children:(0,o.createComponentVNode)(2,b,{fillPositionedParent:!0,children:t})})))};g.defaultHooks=r.pureComponentHooks,b.Forced=g},function(e,t,n){"use strict";var o=n(9),r=n(71),a=n(47),i=n(25),c=n(33),l=n(16),u=n(121),d=Object.getOwnPropertyDescriptor;t.f=o?d:function(e,t){if(e=i(e),t=c(t,!0),u)try{return d(e,t)}catch(n){}if(l(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0,t.buildQueryString=t.decodeHtmlEntities=t.toTitleCase=t.capitalize=t.testGlobPattern=t.multiline=void 0;t.multiline=function o(e){if(Array.isArray(e))return o(e.join(""));var t,n=e.split("\n"),r=n,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var c;if(a){if(i>=r.length)break;c=r[i++]}else{if((i=r.next()).done)break;c=i.value}for(var l=c,u=0;u",apos:"'"};return e.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/&#?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/&#x?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var o=n(5),r=n(26),a=n(16),i=n(89),c=n(90),l=n(34),u=l.get,d=l.enforce,s=String(String).split("String");(e.exports=function(e,t,n,c){var l=!!c&&!!c.unsafe,u=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof t||a(n,"name")||r(n,"name",t),d(n).source=s.join("string"==typeof t?t:"")),e!==o?(l?!p&&e[t]&&(u=!0):delete e[t],u?e[t]=n:r(e,t,n)):u?e[t]=n:i(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},function(e,t,n){"use strict";var o=n(57),r=n(23);e.exports=function(e){return o(r(e))}},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(47);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var o=n(125),r=n(16),a=n(131),i=n(13).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||i(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";var o=n(23),r=/"/g;e.exports=function(e,t,n,a){var i=String(o(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+String(a).replace(r,""")+'"'),c+">"+i+""}},function(e,t,n){"use strict";var o=n(4);e.exports=function(e){return o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";var o=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:o)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var o={}.toString;e.exports=function(e){return o.call(e).slice(8,-1)}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var o,r,a,i=n(123),c=n(5),l=n(6),u=n(26),d=n(16),s=n(72),p=n(59),m=c.WeakMap;if(i){var f=new m,h=f.get,C=f.has,b=f.set;o=function(e,t){return b.call(f,e,t),t},r=function(e){return h.call(f,e)||{}},a=function(e){return C.call(f,e)}}else{var g=s("state");p[g]=!0,o=function(e,t){return u(e,g,t),t},r=function(e){return d(e,g)?e[g]:{}},a=function(e){return d(e,g)}}e.exports={set:o,get:r,has:a,enforce:function(e){return a(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var o=n(125),r=n(5),a=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?a(o[e])||a(r[e]):o[e]&&o[e][t]||r[e]&&r[e][t]}},function(e,t,n){"use strict";var o=n(16),r=n(14),a=n(72),i=n(102),c=a("IE_PROTO"),l=Object.prototype;e.exports=i?Object.getPrototypeOf:function(e){return e=r(e),o(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var o=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),r=o.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return r&&r.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=o.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var o=n(4);e.exports=function(e,t){var n=[][e];return!n||!o((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(9),i=n(113),c=n(7),l=n(77),u=n(55),d=n(47),s=n(26),p=n(11),m=n(139),f=n(153),h=n(33),C=n(16),b=n(74),g=n(6),N=n(43),v=n(53),V=n(48).f,y=n(154),_=n(19).forEach,k=n(54),x=n(13),L=n(21),B=n(34),w=n(79),S=B.get,I=B.set,T=x.f,A=L.f,P=Math.round,E=r.RangeError,M=l.ArrayBuffer,R=l.DataView,O=c.NATIVE_ARRAY_BUFFER_VIEWS,F=c.TYPED_ARRAY_TAG,D=c.TypedArray,j=c.TypedArrayPrototype,z=c.aTypedArrayConstructor,G=c.isTypedArray,H=function(e,t){for(var n=0,o=t.length,r=new(z(e))(o);o>n;)r[n]=t[n++];return r},U=function(e,t){T(e,t,{get:function(){return S(this)[t]}})},K=function(e){var t;return e instanceof M||"ArrayBuffer"==(t=b(e))||"SharedArrayBuffer"==t},W=function(e,t){return G(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},Y=function(e,t){return W(e,t=h(t,!0))?d(2,e[t]):A(e,t)},q=function(e,t,n){return!(W(e,t=h(t,!0))&&g(n)&&C(n,"value"))||C(n,"get")||C(n,"set")||n.configurable||C(n,"writable")&&!n.writable||C(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};a?(O||(L.f=Y,x.f=q,U(j,"buffer"),U(j,"byteOffset"),U(j,"byteLength"),U(j,"length")),o({target:"Object",stat:!0,forced:!O},{getOwnPropertyDescriptor:Y,defineProperty:q}),e.exports=function(e,t,n){var a=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",l="get"+e,d="set"+e,h=r[c],C=h,b=C&&C.prototype,x={},L=function(e,t){var n=S(e);return n.view[l](t*a+n.byteOffset,!0)},B=function(e,t,o){var r=S(e);n&&(o=(o=P(o))<0?0:o>255?255:255&o),r.view[d](t*a+r.byteOffset,o,!0)},A=function(e,t){T(e,t,{get:function(){return L(this,t)},set:function(e){return B(this,t,e)},enumerable:!0})};O?i&&(C=t((function(e,t,n,o){return u(e,C,c),w(g(t)?K(t)?o!==undefined?new h(t,f(n,a),o):n!==undefined?new h(t,f(n,a)):new h(t):G(t)?H(C,t):y.call(C,t):new h(m(t)),e,C)})),v&&v(C,D),_(V(h),(function(e){e in C||s(C,e,h[e])})),C.prototype=b):(C=t((function(e,t,n,o){u(e,C,c);var r,i,l,d=0,s=0;if(g(t)){if(!K(t))return G(t)?H(C,t):y.call(C,t);r=t,s=f(n,a);var h=t.byteLength;if(o===undefined){if(h%a)throw E("Wrong length");if((i=h-s)<0)throw E("Wrong length")}else if((i=p(o)*a)+s>h)throw E("Wrong length");l=i/a}else l=m(t),r=new M(i=l*a);for(I(e,{buffer:r,byteOffset:s,byteLength:i,length:l,view:new R(r)});d2?n-2:0),a=2;a=i){var c=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,o.act)(window.__ref__,"tgui:log",{log:c})}};t.createLogger=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;odocument.F=Object<\/script>"),e.close(),p=e.F;n--;)delete p[d][a[n]];return p()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[d]=o(e),n=new s,s[d]=null,n[u]=e):n=p(),t===undefined?n:r(n,t)},i[u]=!0},function(e,t,n){"use strict";var o=n(13).f,r=n(16),a=n(12)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,a)&&o(e,a,{configurable:!0,value:t})}},function(e,t,n){"use strict";var o=n(12),r=n(43),a=n(26),i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a(c,i,r(null)),e.exports=function(e){c[i][e]=!0}},function(e,t,n){"use strict";var o=n(8),r=n(31),a=n(12)("species");e.exports=function(e,t){var n,i=o(e).constructor;return i===undefined||(n=o(i)[a])==undefined?t:r(n)}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var o=n(126),r=n(93).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(31);e.exports=function(e,t,n){if(o(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var o=n(33),r=n(13),a=n(47);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},function(e,t,n){"use strict";var o=n(59),r=n(6),a=n(16),i=n(13).f,c=n(58),l=n(67),u=c("meta"),d=0,s=Object.isExtensible||function(){return!0},p=function(e){i(e,u,{value:{objectID:"O"+ ++d,weakData:{}}})},m=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,u)){if(!s(e))return"F";if(!t)return"E";p(e)}return e[u].objectID},getWeakData:function(e,t){if(!a(e,u)){if(!s(e))return!0;if(!t)return!1;p(e)}return e[u].weakData},onFreeze:function(e){return l&&m.REQUIRED&&s(e)&&!a(e,u)&&p(e),e}};o[u]=!0},function(e,t,n){"use strict";var o=n(32);e.exports=Array.isArray||function(e){return"Array"==o(e)}},function(e,t,n){"use strict";var o=n(8),r=n(137);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(a){}return function(n,a){return o(n),r(a),t?e.call(n,a):n.__proto__=a,n}}():undefined)},function(e,t,n){"use strict";var o=n(35),r=n(13),a=n(12),i=n(9),c=a("species");e.exports=function(e){var t=o(e),n=r.f;i&&t&&!t[c]&&n(t,c,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var o=n(23),r="["+n(81)+"]",a=RegExp("^"+r+r+"*"),i=RegExp(r+r+"*$"),c=function(e){return function(t){var n=String(o(t));return 1&e&&(n=n.replace(a,"")),2&e&&(n=n.replace(i,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},function(e,t,n){"use strict";var o=n(4),r=n(32),a="".split;e.exports=o((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==r(e)?a.call(e,""):Object(e)}:Object},function(e,t,n){"use strict";var o=0,r=Math.random();e.exports=function(e){return"Symbol("+String(e===undefined?"":e)+")_"+(++o+r).toString(36)}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var o=n(25),r=n(11),a=n(42),i=function(e){return function(t,n,i){var c,l=o(t),u=r(l.length),d=a(i,u);if(e&&n!=n){for(;u>d;)if((c=l[d++])!=c)return!0}else for(;u>d;d++)if((e||d in l)&&l[d]===n)return e||d||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var o=n(4),r=/#|\.prototype\./,a=function(e,t){var n=c[i(e)];return n==u||n!=l&&("function"==typeof t?o(t):!!t)},i=a.normalize=function(e){return String(e).replace(r,".").toLowerCase()},c=a.data={},l=a.NATIVE="N",u=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var o=n(126),r=n(93);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(6),r=n(52),a=n(12)("species");e.exports=function(e,t){var n;return r(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!r(n.prototype)?o(n)&&null===(n=n[a])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var o=n(4),r=n(12),a=n(96),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var o=n(24);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var o=n(8),r=n(98),a=n(11),i=n(49),c=n(99),l=n(134),u=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,d,s){var p,m,f,h,C,b,g,N=i(t,n,d?2:1);if(s)p=e;else{if("function"!=typeof(m=c(e)))throw TypeError("Target is not iterable");if(r(m)){for(f=0,h=a(e.length);h>f;f++)if((C=d?N(o(g=e[f])[0],g[1]):N(e[f]))&&C instanceof u)return C;return new u(!1)}p=m.call(e)}for(b=p.next;!(g=b.call(p)).done;)if("object"==typeof(C=l(p,N,g.value,d))&&C&&C instanceof u)return C;return new u(!1)}).stop=function(e){return new u(!0,e)}},function(e,t,n){"use strict";t.__esModule=!0,t.compose=t.flow=void 0;t.flow=function o(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),i=1;i=c.length)break;d=c[u++]}else{if((u=c.next()).done)break;d=u.value}var s=d;Array.isArray(s)?n=o.apply(void 0,s).apply(void 0,[n].concat(a)):s&&(n=s.apply(void 0,[n].concat(a)))}return n}};t.compose=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;a=0:s>p;p+=m)p in d&&(l=n(l,d[p],p,u));return l}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var o=n(5),r=n(9),a=n(7).NATIVE_ARRAY_BUFFER,i=n(26),c=n(66),l=n(4),u=n(55),d=n(30),s=n(11),p=n(139),m=n(219),f=n(48).f,h=n(13).f,C=n(97),b=n(44),g=n(34),N=g.get,v=g.set,V="ArrayBuffer",y="DataView",_="Wrong length",k=o[V],x=k,L=o[y],B=o.RangeError,w=m.pack,S=m.unpack,I=function(e){return[255&e]},T=function(e){return[255&e,e>>8&255]},A=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},P=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},E=function(e){return w(e,23,4)},M=function(e){return w(e,52,8)},R=function(e,t){h(e.prototype,t,{get:function(){return N(this)[t]}})},O=function(e,t,n,o){var r=p(n),a=N(e);if(r+t>a.byteLength)throw B("Wrong index");var i=N(a.buffer).bytes,c=r+a.byteOffset,l=i.slice(c,c+t);return o?l:l.reverse()},F=function(e,t,n,o,r,a){var i=p(n),c=N(e);if(i+t>c.byteLength)throw B("Wrong index");for(var l=N(c.buffer).bytes,u=i+c.byteOffset,d=o(+r),s=0;sG;)(D=z[G++])in x||i(x,D,k[D]);j.constructor=x}var H=new L(new x(2)),U=L.prototype.setInt8;H.setInt8(0,2147483648),H.setInt8(1,2147483649),!H.getInt8(0)&&H.getInt8(1)||c(L.prototype,{setInt8:function(e,t){U.call(this,e,t<<24>>24)},setUint8:function(e,t){U.call(this,e,t<<24>>24)}},{unsafe:!0})}else x=function(e){u(this,x,V);var t=p(e);v(this,{bytes:C.call(new Array(t),0),byteLength:t}),r||(this.byteLength=t)},L=function(e,t,n){u(this,L,y),u(e,x,y);var o=N(e).byteLength,a=d(t);if(a<0||a>o)throw B("Wrong offset");if(a+(n=n===undefined?o-a:s(n))>o)throw B(_);v(this,{buffer:e,byteLength:n,byteOffset:a}),r||(this.buffer=e,this.byteLength=n,this.byteOffset=a)},r&&(R(x,"byteLength"),R(L,"buffer"),R(L,"byteLength"),R(L,"byteOffset")),c(L.prototype,{getInt8:function(e){return O(this,1,e)[0]<<24>>24},getUint8:function(e){return O(this,1,e)[0]},getInt16:function(e){var t=O(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=O(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return P(O(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return P(O(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return S(O(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return S(O(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){F(this,1,e,I,t)},setUint8:function(e,t){F(this,1,e,I,t)},setInt16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){F(this,4,e,E,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){F(this,8,e,M,t,arguments.length>2?arguments[2]:undefined)}});b(x,V),b(L,y),e.exports={ArrayBuffer:x,DataView:L}},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(61),i=n(24),c=n(51),l=n(68),u=n(55),d=n(6),s=n(4),p=n(75),m=n(44),f=n(79);e.exports=function(e,t,n){var h=-1!==e.indexOf("Map"),C=-1!==e.indexOf("Weak"),b=h?"set":"add",g=r[e],N=g&&g.prototype,v=g,V={},y=function(e){var t=N[e];i(N,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return C&&!d(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(a(e,"function"!=typeof g||!(C||N.forEach&&!s((function(){(new g).entries().next()})))))v=n.getConstructor(t,e,h,b),c.REQUIRED=!0;else if(a(e,!0)){var _=new v,k=_[b](C?{}:-0,1)!=_,x=s((function(){_.has(1)})),L=p((function(e){new g(e)})),B=!C&&s((function(){for(var e=new g,t=5;t--;)e[b](t,t);return!e.has(-0)}));L||((v=t((function(t,n){u(t,v,e);var o=f(new g,t,v);return n!=undefined&&l(n,o[b],o,h),o}))).prototype=N,N.constructor=v),(x||B)&&(y("delete"),y("has"),h&&y("get")),(B||k)&&y(b),C&&N.clear&&delete N.clear}return V[e]=v,o({global:!0,forced:v!=g},V),m(v,e),C||n.setStrong(v,e,h),v}},function(e,t,n){"use strict";var o=n(6),r=n(53);e.exports=function(e,t,n){var a,i;return r&&"function"==typeof(a=t.constructor)&&a!==n&&o(i=a.prototype)&&i!==n.prototype&&r(e,i),e}},function(e,t,n){"use strict";var o=Math.expm1,r=Math.exp;e.exports=!o||o(10)>22025.465794806718||o(10)<22025.465794806718||-2e-17!=o(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:r(e)-1}:o},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var o=n(38),r=n(5),a=n(4);e.exports=o||!a((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}))},function(e,t,n){"use strict";var o=n(8);e.exports=function(){var e=o(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var o,r,a=n(83),i=RegExp.prototype.exec,c=String.prototype.replace,l=i,u=(o=/a/,r=/b*/g,i.call(o,"a"),i.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),d=/()??/.exec("")[1]!==undefined;(u||d)&&(l=function(e){var t,n,o,r,l=this;return d&&(n=new RegExp("^"+l.source+"$(?!\\s)",a.call(l))),u&&(t=l.lastIndex),o=i.call(l,e),u&&o&&(l.lastIndex=l.global?o.index+o[0].length:t),d&&o&&o.length>1&&c.call(o[0],n,(function(){for(r=1;r")})),d=!a((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,s){var p=i(e),m=!a((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=m&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!m||!f||"replace"===e&&!u||"split"===e&&!d){var h=/./[p],C=n(p,""[e],(function(e,t,n,o,r){return t.exec===c?m&&!r?{done:!0,value:h.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}})),b=C[0],g=C[1];r(String.prototype,e,b),r(RegExp.prototype,p,2==t?function(e,t){return g.call(e,this,t)}:function(e){return g.call(e,this)}),s&&o(RegExp.prototype[p],"sham",!0)}}},function(e,t,n){"use strict";var o=n(32),r=n(84);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var a=n.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var o=n(0),r=n(10),a=n(20);var i=/-o$/,c=function(e){var t=e.name,n=e.size,c=e.spin,l=e.className,u=e.style,d=void 0===u?{}:u,s=e.rotation,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["name","size","spin","className","style","rotation"]);n&&(d["font-size"]=100*n+"%"),"number"==typeof s&&(d.transform="rotate("+s+"deg)");var m=i.test(t),f=t.replace(i,"");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"i",className:(0,r.classes)([l,m?"far":"fas","fa-"+f,c&&"fa-spin"]),style:d},p)))};t.Icon=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var o=n(5),r=n(6),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,n){"use strict";var o=n(5),r=n(26);e.exports=function(e,t){try{r(o,e,t)}catch(n){o[e]=t}return t}},function(e,t,n){"use strict";var o=n(122),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},function(e,t,n){"use strict";var o=n(38),r=n(122);(e.exports=function(e,t){return r[e]||(r[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.4.8",mode:o?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var o=n(35),r=n(48),a=n(94),i=n(8);e.exports=o("Reflect","ownKeys")||function(e){var t=r.f(i(e)),n=a.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var o=n(4);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var o,r,a=n(5),i=n(73),c=a.process,l=c&&c.versions,u=l&&l.v8;u?r=(o=u.split("."))[0]+o[1]:i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},function(e,t,n){"use strict";var o=n(14),r=n(42),a=n(11);e.exports=function(e){for(var t=o(this),n=a(t.length),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,u=l===undefined?n:r(l,n);u>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var o=n(12),r=n(65),a=o("iterator"),i=Array.prototype;e.exports=function(e){return e!==undefined&&(r.Array===e||i[a]===e)}},function(e,t,n){"use strict";var o=n(74),r=n(65),a=n(12)("iterator");e.exports=function(e){if(e!=undefined)return e[a]||e["@@iterator"]||r[o(e)]}},function(e,t,n){"use strict";var o={};o[n(12)("toStringTag")]="z",e.exports="[object z]"===String(o)},function(e,t,n){"use strict";var o=n(1),r=n(204),a=n(36),i=n(53),c=n(44),l=n(26),u=n(24),d=n(12),s=n(38),p=n(65),m=n(136),f=m.IteratorPrototype,h=m.BUGGY_SAFARI_ITERATORS,C=d("iterator"),b=function(){return this};e.exports=function(e,t,n,d,m,g,N){r(n,t,d);var v,V,y,_=function(e){if(e===m&&w)return w;if(!h&&e in L)return L[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},k=t+" Iterator",x=!1,L=e.prototype,B=L[C]||L["@@iterator"]||m&&L[m],w=!h&&B||_(m),S="Array"==t&&L.entries||B;if(S&&(v=a(S.call(new e)),f!==Object.prototype&&v.next&&(s||a(v)===f||(i?i(v,f):"function"!=typeof v[C]&&l(v,C,b)),c(v,k,!0,!0),s&&(p[k]=b))),"values"==m&&B&&"values"!==B.name&&(x=!0,w=function(){return B.call(this)}),s&&!N||L[C]===w||l(L,C,w),p[t]=w,m)if(V={values:_("values"),keys:g?w:_("keys"),entries:_("entries")},N)for(y in V)!h&&!x&&y in L||u(L,y,V[y]);else o({target:t,proto:!0,forced:h||x},V);return V}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";var o=n(11),r=n(104),a=n(23),i=Math.ceil,c=function(e){return function(t,n,c){var l,u,d=String(a(t)),s=d.length,p=c===undefined?" ":String(c),m=o(n);return m<=s||""==p?d:(l=m-s,(u=r.call(p,i(l/p.length))).length>l&&(u=u.slice(0,l)),e?d+u:u+d)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var o=n(30),r=n(23);e.exports="".repeat||function(e){var t=String(r(this)),n="",a=o(e);if(a<0||a==Infinity)throw RangeError("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))1&a&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var o,r,a,i=n(5),c=n(4),l=n(32),u=n(49),d=n(129),s=n(88),p=n(148),m=i.location,f=i.setImmediate,h=i.clearImmediate,C=i.process,b=i.MessageChannel,g=i.Dispatch,N=0,v={},V=function(e){if(v.hasOwnProperty(e)){var t=v[e];delete v[e],t()}},y=function(e){return function(){V(e)}},_=function(e){V(e.data)},k=function(e){i.postMessage(e+"",m.protocol+"//"+m.host)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return v[++N]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},o(N),N},h=function(e){delete v[e]},"process"==l(C)?o=function(e){C.nextTick(y(e))}:g&&g.now?o=function(e){g.now(y(e))}:b&&!p?(a=(r=new b).port2,r.port1.onmessage=_,o=u(a.postMessage,a,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||c(k)?o="onreadystatechange"in s("script")?function(e){d.appendChild(s("script")).onreadystatechange=function(){d.removeChild(this),V(e)}}:function(e){setTimeout(y(e),0)}:(o=k,i.addEventListener("message",_,!1))),e.exports={set:f,clear:h}},function(e,t,n){"use strict";var o=n(6),r=n(32),a=n(12)("match");e.exports=function(e){var t;return o(e)&&((t=e[a])!==undefined?!!t:"RegExp"==r(e))}},function(e,t,n){"use strict";var o=n(30),r=n(23),a=function(e){return function(t,n){var a,i,c=String(r(t)),l=o(n),u=c.length;return l<0||l>=u?e?"":undefined:(a=c.charCodeAt(l))<55296||a>56319||l+1===u||(i=c.charCodeAt(l+1))<56320||i>57343?e?c.charAt(l):a:e?c.slice(l,l+2):i-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t,n){"use strict";var o=n(107);e.exports=function(e){if(o(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var o=n(12)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},function(e,t,n){"use strict";var o=n(108).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},function(e,t,n){"use strict";var o=n(4),r=n(81);e.exports=function(e){return o((function(){return!!r[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||r[e].name!==e}))}},function(e,t,n){"use strict";var o=n(5),r=n(4),a=n(75),i=n(7).NATIVE_ARRAY_BUFFER_VIEWS,c=o.ArrayBuffer,l=o.Int8Array;e.exports=!i||!r((function(){l(1)}))||!r((function(){new l(-1)}))||!a((function(e){new l,new l(null),new l(1.5),new l(e)}),!0)||r((function(){return 1!==new l(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.toastReducer=t.showToast=t.Toast=void 0;var o,r=n(0),a=n(10),i=function(e){var t=e.content,n=e.children;return(0,r.createVNode)(1,"div","Layout__toast",[t,n],0)};t.Toast=i,i.defaultHooks=a.pureComponentHooks;t.showToast=function(e,t){o&&clearTimeout(o),o=setTimeout((function(){o=undefined,e({type:"hideToast"})}),5e3),e({type:"showToast",payload:{text:t}})};t.toastReducer=function(e,t){var n=t.type,o=t.payload;if("showToast"===n){var r=o.text;return Object.assign({},e,{toastText:r})}return"hideToast"===n?Object.assign({},e,{toastText:null}):e}},function(e,t,n){"use strict";t.__esModule=!0,t.hotKeyReducer=t.hotKeyMiddleware=t.releaseHeldKeys=t.KEY_MINUS=t.KEY_EQUAL=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;var o=n(41),r=n(15),a=(0,o.createLogger)("hotkeys");t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_EQUAL=187;t.KEY_MINUS=189;var i=[17,18,16],c=[27,13,32,9,17,16],l={},u=function(e,t,n,o){var r="";return e&&(r+="Ctrl+"),t&&(r+="Alt+"),n&&(r+="Shift+"),r+=o>=48&&o<=90?String.fromCharCode(o):"["+o+"]"},d=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,o=e.altKey,r=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:o,shiftKey:r,hasModifierKeys:n||o||r,keyString:u(n,o,r,t)}},s=function(){for(var e=0,t=Object.keys(l);e4&&function(e,t){if(!e.defaultPrevented){var n=e.target&&e.target.localName;if("input"!==n&&"textarea"!==n){var o=d(e),i=o.keyCode,u=o.ctrlKey,s=o.shiftKey;u||s||c.includes(i)||("keydown"!==t||l[i]?"keyup"===t&&l[i]&&(a.debug("passthrough",t,o),(0,r.callByond)("",{__keyup:i})):(a.debug("passthrough",t,o),(0,r.callByond)("",{__keydown:i})))}}}(e,t),function(e,t,n){if("keyup"===t){var o=d(e),r=o.ctrlKey,c=o.altKey,l=o.keyCode,u=o.hasModifierKeys,s=o.keyString;u&&!i.includes(l)&&(a.log(s),r&&c&&8===l&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")})),n({type:"hotKey",payload:o}))}}(e,t,n)},document.addEventListener("keydown",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keydown"),l[n]=!0})),document.addEventListener("keyup",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keyup"),l[n]=!1})),r.tridentVersion>4&&function(e){var t;document.addEventListener("focusout",(function(){t=setTimeout(e)})),document.addEventListener("focusin",(function(){clearTimeout(t)})),window.addEventListener("beforeunload",e)}((function(){s()})),function(e){return function(t){return e(t)}}};t.hotKeyReducer=function(e,t){var n=t.type,o=t.payload;if("hotKey"===n){var r=o.ctrlKey,a=o.altKey,i=o.keyCode;return r&&a&&187===i?Object.assign({},e,{showKitchenSink:!e.showKitchenSink}):e}return e}},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var o=n(0),r=n(10),a=n(15),i=n(115),c=n(41),l=n(117),u=n(20),d=n(87),s=n(160);n(161),n(162);function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function m(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var f=(0,c.createLogger)("Button"),h=function(e){var t=e.className,n=e.fluid,c=e.icon,p=e.color,h=e.disabled,C=e.selected,b=e.tooltip,g=e.tooltipPosition,N=e.ellipsis,v=e.content,V=e.iconRotation,y=e.iconSpin,_=e.children,k=e.onclick,x=e.onClick,L=m(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),B=!(!v&&!_);return k&&f.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({as:"span",className:(0,r.classes)(["Button",n&&"Button--fluid",h&&"Button--disabled",C&&"Button--selected",B&&"Button--hasContent",N&&"Button--ellipsis",p&&"string"==typeof p?"Button--color--"+p:"Button--color--default",t]),tabIndex:!h&&"0",unselectable:a.tridentVersion<=4,onclick:function(e){(0,l.refocusLayout)(),!h&&x&&x(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===i.KEY_SPACE||t===i.KEY_ENTER?(e.preventDefault(),void(!h&&x&&x(e))):t===i.KEY_ESCAPE?(e.preventDefault(),void(0,l.refocusLayout)()):void 0}},L,{children:[c&&(0,o.createComponentVNode)(2,d.Icon,{name:c,rotation:V,spin:y}),v,_,b&&(0,o.createComponentVNode)(2,s.Tooltip,{content:b,position:g})]})))};t.Button=h,h.defaultHooks=r.pureComponentHooks;var C=function(e){var t=e.checked,n=m(e,["checked"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=C,h.Checkbox=C;var b=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}p(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,r=void 0===n?"Confirm?":n,a=t.confirmColor,i=void 0===a?"bad":a,c=t.confirmIcon,l=t.icon,u=t.color,d=t.content,s=t.onClick,p=m(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({content:this.state.clickedOnce?r:d,icon:this.state.clickedOnce?c:l,color:this.state.clickedOnce?i:u,onClick:function(){return e.state.clickedOnce?s():e.setClickedOnce(!0)}},p)))},t}(o.Component);t.ButtonConfirm=b,h.Confirm=b;var g=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={inInput:!1},t}p(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,c=t.icon,l=t.iconRotation,p=t.iconSpin,f=t.tooltip,h=t.tooltipPosition,C=t.color,b=void 0===C?"default":C,g=(t.placeholder,t.maxLength,m(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({className:(0,r.classes)(["Button",n&&"Button--fluid","Button--color--"+b])},g,{onClick:function(){return e.setInInput(!0)},children:[c&&(0,o.createComponentVNode)(2,d.Icon,{name:c,rotation:l,spin:p}),(0,o.createVNode)(1,"div",null,a,0),(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),f&&(0,o.createComponentVNode)(2,s.Tooltip,{content:f,position:h})]})))},t}(o.Component);t.ButtonInput=g,h.Input=g},function(e,t,n){"use strict";t.__esModule=!0,t.refocusLayout=void 0;var o=n(15);t.refocusLayout=function(){if(!(o.tridentVersion<=4)){var e=document.getElementById("Layout__content");e&&e.focus()}}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var o=n(0),r=n(10),a=n(20),i=function(e){var t=e.children;return(0,o.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=i,i.defaultHooks=r.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,i=e.labelColor,c=void 0===i?"label":i,l=e.color,u=e.buttons,d=e.content,s=e.children;return(0,o.createVNode)(1,"tr",(0,r.classes)(["LabeledList__row",t]),[(0,o.createComponentVNode)(2,a.Box,{as:"td",color:c,className:(0,r.classes)(["LabeledList__cell","LabeledList__label"]),content:n+":"}),(0,o.createComponentVNode)(2,a.Box,{as:"td",color:l,className:(0,r.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:u?undefined:2,children:[d,s]}),u&&(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",u,0)],0)};t.LabeledListItem=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t;return(0,o.createVNode)(1,"tr","LabeledList__row",(0,o.createVNode)(1,"td",null,null,1,{style:{"padding-bottom":(0,a.unit)(n)}}),2)};t.LabeledListDivider=l,l.defaultHooks=r.pureComponentHooks,i.Item=c,i.Divider=l},function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(0),r=n(2);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name]},e.name)}))]})}},function(e,t,n){"use strict";var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(r){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(88);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(5),r=n(89),a=o["__core-js_shared__"]||r("__core-js_shared__",{});e.exports=a},function(e,t,n){"use strict";var o=n(5),r=n(90),a=o.WeakMap;e.exports="function"==typeof a&&/native code/.test(r(a))},function(e,t,n){"use strict";var o=n(16),r=n(92),a=n(21),i=n(13);e.exports=function(e,t){for(var n=r(t),c=i.f,l=a.f,u=0;ul;)o(c,n=t[l++])&&(~a(u,n)||u.push(n));return u}},function(e,t,n){"use strict";var o=n(95);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol()},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(8),i=n(62);e.exports=o?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),c=o.length,l=0;c>l;)r.f(e,n=o[l++],t[n]);return e}},function(e,t,n){"use strict";var o=n(35);e.exports=o("document","documentElement")},function(e,t,n){"use strict";var o=n(25),r=n(48).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(e){try{return r(e)}catch(t){return i.slice()}};e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?c(e):r(o(e))}},function(e,t,n){"use strict";var o=n(12);t.f=o},function(e,t,n){"use strict";var o=n(14),r=n(42),a=n(11),i=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),c=a(n.length),l=r(e,c),u=r(t,c),d=arguments.length>2?arguments[2]:undefined,s=i((d===undefined?c:r(d,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:delete n[l],l+=p,u+=p;return n}},function(e,t,n){"use strict";var o=n(52),r=n(11),a=n(49);e.exports=function i(e,t,n,c,l,u,d,s){for(var p,m=l,f=0,h=!!d&&a(d,s,3);f0&&o(p))m=i(e,t,p,r(p.length),m,u-1)-1;else{if(m>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[m]=p}m++}f++}return m}},function(e,t,n){"use strict";var o=n(8);e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(i){var a=e["return"];throw a!==undefined&&o(a.call(e)),i}}},function(e,t,n){"use strict";var o=n(25),r=n(45),a=n(65),i=n(34),c=n(101),l=i.set,u=i.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:o(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,n=e.kind,o=e.index++;return!t||o>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:o,done:!1}:"values"==n?{value:t[o],done:!1}:{value:[o,t[o]],done:!1}}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";var o,r,a,i=n(36),c=n(26),l=n(16),u=n(12),d=n(38),s=u("iterator"),p=!1;[].keys&&("next"in(a=[].keys())?(r=i(i(a)))!==Object.prototype&&(o=r):p=!0),o==undefined&&(o={}),d||l(o,s)||c(o,s,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:p}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var o=n(25),r=n(30),a=n(11),i=n(39),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,d=i("lastIndexOf");e.exports=u||d?function(e){if(u)return l.apply(this,arguments)||0;var t=o(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=c(i,r(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:l},function(e,t,n){"use strict";var o=n(30),r=n(11);e.exports=function(e){if(e===undefined)return 0;var t=o(e),n=r(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var o=n(31),r=n(6),a=[].slice,i={},c=function(e,t,n){if(!(t in i)){for(var o=[],r=0;r1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),a(d.prototype,n?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return C(this,0===e?0:e,t)}}:{add:function(e){return C(this,e=0===e?0:e,e)}}),s&&o(d.prototype,"size",{get:function(){return m(this).size}}),d},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);u(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),d(t)}}},function(e,t,n){"use strict";var o=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:o(1+e)}},function(e,t,n){"use strict";var o=n(6),r=Math.floor;e.exports=function(e){return!o(e)&&isFinite(e)&&r(e)===e}},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseInt,c=/^[+-]?0[Xx]/,l=8!==i(a+"08")||22!==i(a+"0x16");e.exports=l?function(e,t){var n=r(String(e));return i(n,t>>>0||(c.test(n)?16:10))}:i},function(e,t,n){"use strict";var o=n(9),r=n(62),a=n(25),i=n(71).f,c=function(e){return function(t){for(var n,c=a(t),l=r(c),u=l.length,d=0,s=[];u>d;)n=l[d++],o&&!i.call(c,n)||s.push(e?[n,c[n]]:c[n]);return s}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var o=n(5);e.exports=o.Promise},function(e,t,n){"use strict";var o=n(73);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(o)},function(e,t,n){"use strict";var o,r,a,i,c,l,u,d,s=n(5),p=n(21).f,m=n(32),f=n(106).set,h=n(148),C=s.MutationObserver||s.WebKitMutationObserver,b=s.process,g=s.Promise,N="process"==m(b),v=p(s,"queueMicrotask"),V=v&&v.value;V||(o=function(){var e,t;for(N&&(e=b.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},N?i=function(){b.nextTick(o)}:C&&!h?(c=!0,l=document.createTextNode(""),new C(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c}):g&&g.resolve?(u=g.resolve(undefined),d=u.then,i=function(){d.call(u,o)}):i=function(){f.call(s,o)}),e.exports=V||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},function(e,t,n){"use strict";var o=n(8),r=n(6),a=n(151);e.exports=function(e,t){if(o(e),r(t)&&t.constructor===e)return t;var n=a.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var o=n(31),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},function(e,t,n){"use strict";var o=n(73);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o)},function(e,t,n){"use strict";var o=n(349);e.exports=function(e,t){var n=o(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var o=n(14),r=n(11),a=n(99),i=n(98),c=n(49),l=n(7).aTypedArrayConstructor;e.exports=function(e){var t,n,u,d,s,p,m=o(e),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined,b=a(m);if(b!=undefined&&!i(b))for(p=(s=b.call(m)).next,m=[];!(d=p.call(s)).done;)m.push(d.value);for(C&&f>2&&(h=c(h,arguments[2],2)),n=r(m.length),u=new(l(this))(n),t=0;n>t;t++)u[t]=C?h(m[t],t):m[t];return u}},function(e,t,n){"use strict";var o=n(66),r=n(51).getWeakData,a=n(8),i=n(6),c=n(55),l=n(68),u=n(19),d=n(16),s=n(34),p=s.set,m=s.getterFor,f=u.find,h=u.findIndex,C=0,b=function(e){return e.frozen||(e.frozen=new g)},g=function(){this.entries=[]},N=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};g.prototype={get:function(e){var t=N(this,e);if(t)return t[1]},has:function(e){return!!N(this,e)},set:function(e,t){var n=N(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=h(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,u){var s=e((function(e,o){c(e,s,t),p(e,{type:t,id:C++,frozen:undefined}),o!=undefined&&l(o,e[u],e,n)})),f=m(t),h=function(e,t,n){var o=f(e),i=r(a(t),!0);return!0===i?b(o).set(t,n):i[o.id]=n,e};return o(s.prototype,{"delete":function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?b(t)["delete"](e):n&&d(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?b(t).has(e):n&&d(n,t.id)}}),o(s.prototype,n?{get:function(e){var t=f(this);if(i(e)){var n=r(e);return!0===n?b(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return h(this,e,t)}}:{add:function(e){return h(this,e,!0)}}),s}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var o,r,a,i,c,l=n(158),u=n(15),d=(0,n(41).createLogger)("drag"),s=!1,p=!1,m=[0,0],f=function(e){return(0,u.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},h=function(e,t){return(0,u.winset)(e,"pos",t[0]+","+t[1])},C=function(e){var t,n,r,a;return regeneratorRuntime.async((function(i){for(;;)switch(i.prev=i.next){case 0:return d.log("setting up"),o=e.config.window,i.next=4,regeneratorRuntime.awrap(f(o));case 4:t=i.sent,m=[t[0]-window.screenLeft,t[1]-window.screenTop],n=b(t),r=n[0],a=n[1],r&&h(o,a),d.debug("current state",{ref:o,screenOffset:m});case 9:case"end":return i.stop()}}))};t.setupDrag=C;var b=function(e){var t=e[0],n=e[1],o=!1;return t<0?(t=0,o=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,o=!0),n<0?(n=0,o=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,o=!0),[o,[t,n]]};t.dragStartHandler=function(e){d.log("drag start"),s=!0,r=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",N),document.addEventListener("mouseup",g),N(e)};var g=function y(e){d.log("drag end"),N(e),document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",y),s=!1},N=function(e){s&&(e.preventDefault(),h(o,(0,l.vecAdd)([e.screenX,e.screenY],m,r)))};t.resizeStartHandler=function(e,t){return function(n){a=[e,t],d.log("resize start",a),p=!0,r=[window.screenLeft-n.screenX,window.screenTop-n.screenY],i=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",V),document.addEventListener("mouseup",v),V(n)}};var v=function _(e){d.log("resize end",c),V(e),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",_),p=!1},V=function(e){p&&(e.preventDefault(),(c=(0,l.vecAdd)(i,(0,l.vecMultiply)(a,(0,l.vecAdd)([e.screenX,e.screenY],(0,l.vecInverse)([window.screenLeft,window.screenTop]),r,[1,1]))))[0]=Math.max(c[0],250),c[1]=Math.max(c[1],120),function(e,t){(0,u.winset)(e,"size",t[0]+","+t[1])}(o,c))}},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var o=n(17);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n35;return(0,o.createVNode)(1,"div",(0,r.classes)(["Tooltip",i&&"Tooltip--long",a&&"Tooltip--"+a]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(10),a=n(20);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=c(t.props.value),void e.target.blur()):void 0},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=c(e))},u.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=c(r))},u.setEditing=function(e){this.setState({editing:e})},u.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,c=i(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),l=c.className,u=c.fluid,d=i(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",u&&"Input--fluid",l])},d,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),(0,o.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},l}(o.Component);t.Input=l},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(0),r=n(163),a=n(10);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table,Object.assign({},n,{children:(0,o.createComponentVNode)(2,r.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=a.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,a=e.style,c=i(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},a)},c)))};t.GridColumn=l,c.defaultHooks=a.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var o=n(0),r=n(10),a=n(20);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.collapsing,n=e.className,c=e.content,l=e.children,u=i(e,["collapsing","className","content","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"table",className:(0,r.classes)(["Table",t&&"Table--collapsing",n])},u,{children:(0,o.createVNode)(1,"tbody",null,[c,l],0)})))};t.Table=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.className,n=e.header,c=i(e,["className","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"tr",className:(0,r.classes)(["Table__row",n&&"Table__row--header",t])},c)))};t.TableRow=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.collapsing,c=e.header,l=i(e,["className","collapsing","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"td",className:(0,r.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t])},l)))};t.TableCell=u,u.defaultHooks=r.pureComponentHooks,c.Row=l,c.Cell=u},function(e,t,n){"use strict";t.__esModule=!0,t.AccessList=void 0;var o=n(0),r=n(2),a=n(17);t.AccessList=function(e){var t=e.accesses,n=void 0===t?[]:t,i=e.selectedList,c=void 0===i?[]:i,l=e.accessMod,u=e.grantAll,d=e.denyAll,s=e.grantDep,p=e.denyDep,m={0:{icon:"times-circle",color:"bad"},1:{icon:"stop-circle",color:null},2:{icon:"check-circle",color:"good"}},f=function(e){var t=!1,n=!1;return e.forEach((function(e){c.includes(e.ref)?t=!0:n=!0})),!t&&n?0:t&&n?1:2};return(0,o.createComponentVNode)(2,r.Section,{title:"Access",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:"check-double",content:"Grant All",color:"good",onClick:function(){return u()}}),(0,o.createComponentVNode)(2,r.Button,{icon:"undo",content:"Deny All",color:"bad",onClick:function(){return d()}})],4),children:(0,o.createComponentVNode)(2,r.Tabs,{vertical:!0,altSelection:!0,children:n.map((function(e){var t=(0,a.sortBy)((function(e){return e.desc}))(e.accesses||[]),n=m[f(t)].icon,i=m[f(t)].color;return(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:e.name,color:i,icon:n,children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{mr:0,children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"check",content:"Grant Region",color:"good",onClick:function(){return s(e.regid)}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{ml:0,children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"times",content:"Deny Region",color:"bad",onClick:function(){return p(e.regid)}})})]}),t.map((function(e){return(0,o.createComponentVNode)(2,r.Button.Checkbox,{fluid:!0,content:e.desc,checked:c.includes(e.ref),onClick:function(){return l(e.ref)}},e.desc)}))]},e.name)}))})})}},function(e,t,n){n(166),n(167),n(168),n(169),n(170),n(171),n(172),e.exports=n(173)},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(196),n(197),n(199),n(201),n(202),n(203),n(135),n(205),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(213),n(214),n(215),n(216),n(217),n(218),n(220),n(221),n(222),n(223),n(224),n(226),n(227),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(244),n(245),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(255),n(256),n(258),n(259),n(260),n(261),n(262),n(263),n(265),n(266),n(268),n(270),n(271),n(272),n(273),n(274),n(275),n(276),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(291),n(292),n(294),n(295),n(296),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(308),n(309),n(310),n(311),n(312),n(313),n(314),n(315),n(316),n(317),n(318),n(319),n(320),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(344),n(345),n(346),n(347),n(348),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386),n(387);var o=n(0);n(389),n(390);var r=n(391),a=(n(156),n(3)),i=n(15),c=n(157),l=n(41),u=n(392),d=(0,l.createLogger)(),s=(0,u.createStore)(),p=document.getElementById("react-root"),m=!0,f=function(){for(s.subscribe((function(){!function(){try{var e=s.getState();m&&(d.log("initial render",e),(0,c.setupDrag)(e));var t=n(394).Layout,r=(0,o.createComponentVNode)(2,t,{state:e,dispatch:s.dispatch});(0,o.render)(r,p)}catch(a){d.error("rendering error",a)}m&&(m=!1)}()})),window.update=window.initialize=function(e){var t=function(e){var t=function(e,t){return"object"==typeof t&&null!==t&&t.__number__?parseFloat(t.__number__):t};i.tridentVersion<=4&&(t=undefined);try{return JSON.parse(e,t)}catch(o){d.log(o),d.log("What we got:",e);var n=o&&o.message;throw new Error("JSON parsing error: "+n)}}(e);s.dispatch((0,a.backendUpdate)(t))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}(0,r.loadCSS)("font-awesome.css")};i.tridentVersion<=4&&"loading"===document.readyState?document.addEventListener("DOMContentLoaded",f):f()},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(35),i=n(38),c=n(9),l=n(95),u=n(127),d=n(4),s=n(16),p=n(52),m=n(6),f=n(8),h=n(14),C=n(25),b=n(33),g=n(47),N=n(43),v=n(62),V=n(48),y=n(130),_=n(94),k=n(21),x=n(13),L=n(71),B=n(26),w=n(24),S=n(91),I=n(72),T=n(59),A=n(58),P=n(12),E=n(131),M=n(27),R=n(44),O=n(34),F=n(19).forEach,D=I("hidden"),j=P("toPrimitive"),z=O.set,G=O.getterFor("Symbol"),H=Object.prototype,U=r.Symbol,K=a("JSON","stringify"),W=k.f,Y=x.f,q=y.f,$=L.f,Q=S("symbols"),X=S("op-symbols"),J=S("string-to-symbol-registry"),Z=S("symbol-to-string-registry"),ee=S("wks"),te=r.QObject,ne=!te||!te.prototype||!te.prototype.findChild,oe=c&&d((function(){return 7!=N(Y({},"a",{get:function(){return Y(this,"a",{value:7}).a}})).a}))?function(e,t,n){var o=W(H,t);o&&delete H[t],Y(e,t,n),o&&e!==H&&Y(H,t,o)}:Y,re=function(e,t){var n=Q[e]=N(U.prototype);return z(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ae=l&&"symbol"==typeof U.iterator?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ie=function(e,t,n){e===H&&ie(X,t,n),f(e);var o=b(t,!0);return f(n),s(Q,o)?(n.enumerable?(s(e,D)&&e[D][o]&&(e[D][o]=!1),n=N(n,{enumerable:g(0,!1)})):(s(e,D)||Y(e,D,g(1,{})),e[D][o]=!0),oe(e,o,n)):Y(e,o,n)},ce=function(e,t){f(e);var n=C(t),o=v(n).concat(pe(n));return F(o,(function(t){c&&!ue.call(n,t)||ie(e,t,n[t])})),e},le=function(e,t){return t===undefined?N(e):ce(N(e),t)},ue=function(e){var t=b(e,!0),n=$.call(this,t);return!(this===H&&s(Q,t)&&!s(X,t))&&(!(n||!s(this,t)||!s(Q,t)||s(this,D)&&this[D][t])||n)},de=function(e,t){var n=C(e),o=b(t,!0);if(n!==H||!s(Q,o)||s(X,o)){var r=W(n,o);return!r||!s(Q,o)||s(n,D)&&n[D][o]||(r.enumerable=!0),r}},se=function(e){var t=q(C(e)),n=[];return F(t,(function(e){s(Q,e)||s(T,e)||n.push(e)})),n},pe=function(e){var t=e===H,n=q(t?X:C(e)),o=[];return F(n,(function(e){!s(Q,e)||t&&!s(H,e)||o.push(Q[e])})),o};(l||(w((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=A(e),n=function o(e){this===H&&o.call(X,e),s(this,D)&&s(this[D],t)&&(this[D][t]=!1),oe(this,t,g(1,e))};return c&&ne&&oe(H,t,{configurable:!0,set:n}),re(t,e)}).prototype,"toString",(function(){return G(this).tag})),L.f=ue,x.f=ie,k.f=de,V.f=y.f=se,_.f=pe,c&&(Y(U.prototype,"description",{configurable:!0,get:function(){return G(this).description}}),i||w(H,"propertyIsEnumerable",ue,{unsafe:!0}))),u||(E.f=function(e){return re(P(e),e)}),o({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:U}),F(v(ee),(function(e){M(e)})),o({target:"Symbol",stat:!0,forced:!l},{"for":function(e){var t=String(e);if(s(J,t))return J[t];var n=U(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(s(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),o({target:"Object",stat:!0,forced:!l,sham:!c},{create:le,defineProperty:ie,defineProperties:ce,getOwnPropertyDescriptor:de}),o({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:pe}),o({target:"Object",stat:!0,forced:d((function(){_.f(1)}))},{getOwnPropertySymbols:function(e){return _.f(h(e))}}),K)&&o({target:"JSON",stat:!0,forced:!l||d((function(){var e=U();return"[null]"!=K([e])||"{}"!=K({a:e})||"{}"!=K(Object(e))}))},{stringify:function(e,t,n){for(var o,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(o=t,(m(t)||e!==undefined)&&!ae(e))return p(t)||(t=function(e,t){if("function"==typeof o&&(t=o.call(this,e,t)),!ae(t))return t}),r[1]=t,K.apply(null,r)}});U.prototype[j]||B(U.prototype,j,U.prototype.valueOf),R(U,"Symbol"),T[D]=!0},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(5),i=n(16),c=n(6),l=n(13).f,u=n(124),d=a.Symbol;if(r&&"function"==typeof d&&(!("description"in d.prototype)||d().description!==undefined)){var s={},p=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof p?new d(e):e===undefined?d():d(e);return""===e&&(s[t]=!0),t};u(p,d);var m=p.prototype=d.prototype;m.constructor=p;var f=m.toString,h="Symbol(test)"==String(d("test")),C=/^Symbol\((.*)\)[^)]+$/;l(m,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=f.call(e);if(i(s,e))return"";var n=h?t.slice(7,-1):t.replace(C,"$1");return""===n?undefined:n}}),o({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(52),i=n(6),c=n(14),l=n(11),u=n(50),d=n(63),s=n(64),p=n(12),m=n(96),f=p("isConcatSpreadable"),h=9007199254740991,C="Maximum allowed index exceeded",b=m>=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),g=s("concat"),N=function(e){if(!i(e))return!1;var t=e[f];return t!==undefined?!!t:a(e)};o({target:"Array",proto:!0,forced:!b||!g},{concat:function(e){var t,n,o,r,a,i=c(this),s=d(i,0),p=0;for(t=-1,o=arguments.length;th)throw TypeError(C);for(n=0;n=h)throw TypeError(C);u(s,p++,a)}return s.length=p,s}})},function(e,t,n){"use strict";var o=n(1),r=n(132),a=n(45);o({target:"Array",proto:!0},{copyWithin:r}),a("copyWithin")},function(e,t,n){"use strict";var o=n(1),r=n(19).every;o({target:"Array",proto:!0,forced:n(39)("every")},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(97),a=n(45);o({target:"Array",proto:!0},{fill:r}),a("fill")},function(e,t,n){"use strict";var o=n(1),r=n(19).filter,a=n(4),i=n(64)("filter"),c=i&&!a((function(){[].filter.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(19).find,a=n(45),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{find:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("find")},function(e,t,n){"use strict";var o=n(1),r=n(19).findIndex,a=n(45),i=!0;"findIndex"in[]&&Array(1).findIndex((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{findIndex:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("findIndex")},function(e,t,n){"use strict";var o=n(1),r=n(133),a=n(14),i=n(11),c=n(30),l=n(63);o({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=a(this),n=i(t.length),o=l(t,0);return o.length=r(o,t,t,n,0,e===undefined?1:c(e)),o}})},function(e,t,n){"use strict";var o=n(1),r=n(133),a=n(14),i=n(11),c=n(31),l=n(63);o({target:"Array",proto:!0},{flatMap:function(e){var t,n=a(this),o=i(n.length);return c(e),(t=l(n,0)).length=r(t,n,n,o,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var o=n(1),r=n(198);o({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(e,t,n){"use strict";var o=n(19).forEach,r=n(39);e.exports=r("forEach")?function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}:[].forEach},function(e,t,n){"use strict";var o=n(1),r=n(200);o({target:"Array",stat:!0,forced:!n(75)((function(e){Array.from(e)}))},{from:r})},function(e,t,n){"use strict";var o=n(49),r=n(14),a=n(134),i=n(98),c=n(11),l=n(50),u=n(99);e.exports=function(e){var t,n,d,s,p,m=r(e),f="function"==typeof this?this:Array,h=arguments.length,C=h>1?arguments[1]:undefined,b=C!==undefined,g=0,N=u(m);if(b&&(C=o(C,h>2?arguments[2]:undefined,2)),N==undefined||f==Array&&i(N))for(n=new f(t=c(m.length));t>g;g++)l(n,g,b?C(m[g],g):m[g]);else for(p=(s=N.call(m)).next,n=new f;!(d=p.call(s)).done;g++)l(n,g,b?a(s,C,[d.value,g],!0):d.value);return n.length=g,n}},function(e,t,n){"use strict";var o=n(1),r=n(60).includes,a=n(45);o({target:"Array",proto:!0},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("includes")},function(e,t,n){"use strict";var o=n(1),r=n(60).indexOf,a=n(39),i=[].indexOf,c=!!i&&1/[1].indexOf(1,-0)<0,l=a("indexOf");o({target:"Array",proto:!0,forced:c||l},{indexOf:function(e){return c?i.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(1)({target:"Array",stat:!0},{isArray:n(52)})},function(e,t,n){"use strict";var o=n(136).IteratorPrototype,r=n(43),a=n(47),i=n(44),c=n(65),l=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=r(o,{next:a(1,n)}),i(e,u,!1,!0),c[u]=l,e}},function(e,t,n){"use strict";var o=n(1),r=n(57),a=n(25),i=n(39),c=[].join,l=r!=Object,u=i("join",",");o({target:"Array",proto:!0,forced:l||u},{join:function(e){return c.call(a(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var o=n(1),r=n(138);o({target:"Array",proto:!0,forced:r!==[].lastIndexOf},{lastIndexOf:r})},function(e,t,n){"use strict";var o=n(1),r=n(19).map,a=n(4),i=n(64)("map"),c=i&&!a((function(){[].map.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{map:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(50);o({target:"Array",stat:!0,forced:r((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)a(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var o=n(1),r=n(76).left;o({target:"Array",proto:!0,forced:n(39)("reduce")},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(76).right;o({target:"Array",proto:!0,forced:n(39)("reduceRight")},{reduceRight:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(6),a=n(52),i=n(42),c=n(11),l=n(25),u=n(50),d=n(64),s=n(12)("species"),p=[].slice,m=Math.max;o({target:"Array",proto:!0,forced:!d("slice")},{slice:function(e,t){var n,o,d,f=l(this),h=c(f.length),C=i(e,h),b=i(t===undefined?h:t,h);if(a(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!a(n.prototype)?r(n)&&null===(n=n[s])&&(n=undefined):n=undefined,n===Array||n===undefined))return p.call(f,C,b);for(o=new(n===undefined?Array:n)(m(b-C,0)),d=0;C1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(31),a=n(14),i=n(4),c=n(39),l=[],u=l.sort,d=i((function(){l.sort(undefined)})),s=i((function(){l.sort(null)})),p=c("sort");o({target:"Array",proto:!0,forced:d||!s||p},{sort:function(e){return e===undefined?u.call(a(this)):u.call(a(this),r(e))}})},function(e,t,n){"use strict";n(54)("Array")},function(e,t,n){"use strict";var o=n(1),r=n(42),a=n(30),i=n(11),c=n(14),l=n(63),u=n(50),d=n(64),s=Math.max,p=Math.min,m=9007199254740991,f="Maximum allowed length exceeded";o({target:"Array",proto:!0,forced:!d("splice")},{splice:function(e,t){var n,o,d,h,C,b,g=c(this),N=i(g.length),v=r(e,N),V=arguments.length;if(0===V?n=o=0:1===V?(n=0,o=N-v):(n=V-2,o=p(s(a(t),0),N-v)),N+n-o>m)throw TypeError(f);for(d=l(g,o),h=0;hN-o+n;h--)delete g[h-1]}else if(n>o)for(h=N-o;h>v;h--)b=h+n-1,(C=h+o-1)in g?g[b]=g[C]:delete g[b];for(h=0;h>1,h=23===t?r(2,-24)-r(2,-77):0,C=e<0||0===e&&1/e<0?1:0,b=0;for((e=o(e))!=e||e===1/0?(u=e!=e?1:0,l=m):(l=a(i(e)/c),e*(d=r(2,-l))<1&&(l--,d*=2),(e+=l+f>=1?h/d:h*r(2,1-f))*d>=2&&(l++,d/=2),l+f>=m?(u=0,l=m):l+f>=1?(u=(e*d-1)*r(2,t),l+=f):(u=e*r(2,f-1)*r(2,t),l=0));t>=8;s[b++]=255&u,u/=256,t-=8);for(l=l<0;s[b++]=255&l,l/=256,p-=8);return s[--b]|=128*C,s},unpack:function(e,t){var n,o=e.length,a=8*o-t-1,i=(1<>1,l=a-7,u=o-1,d=e[u--],s=127&d;for(d>>=7;l>0;s=256*s+e[u],u--,l-=8);for(n=s&(1<<-l)-1,s>>=-l,l+=t;l>0;n=256*n+e[u],u--,l-=8);if(0===s)s=1-c;else{if(s===i)return n?NaN:d?-1/0:1/0;n+=r(2,t),s-=c}return(d?-1:1)*n*r(2,s-t)}}},function(e,t,n){"use strict";var o=n(1),r=n(7);o({target:"ArrayBuffer",stat:!0,forced:!r.NATIVE_ARRAY_BUFFER_VIEWS},{isView:r.isView})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(77),i=n(8),c=n(42),l=n(11),u=n(46),d=a.ArrayBuffer,s=a.DataView,p=d.prototype.slice;o({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new d(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(p!==undefined&&t===undefined)return p.call(i(this),e);for(var n=i(this).byteLength,o=c(e,n),r=c(t===undefined?n:t,n),a=new(u(this,d))(l(r-o)),m=new s(this),f=new s(a),h=0;o9999?"+":"";return n+r(a(e),n?6:4,0)+"-"+r(this.getUTCMonth()+1,2,0)+"-"+r(this.getUTCDate(),2,0)+"T"+r(this.getUTCHours(),2,0)+":"+r(this.getUTCMinutes(),2,0)+":"+r(this.getUTCSeconds(),2,0)+"."+r(t,3,0)+"Z"}:l},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(14),i=n(33);o({target:"Date",proto:!0,forced:r((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=a(this),n=i(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var o=n(26),r=n(228),a=n(12)("toPrimitive"),i=Date.prototype;a in i||o(i,a,r)},function(e,t,n){"use strict";var o=n(8),r=n(33);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return r(o(this),"number"!==e)}},function(e,t,n){"use strict";var o=n(24),r=Date.prototype,a="Invalid Date",i=r.toString,c=r.getTime;new Date(NaN)+""!=a&&o(r,"toString",(function(){var e=c.call(this);return e==e?i.call(this):a}))},function(e,t,n){"use strict";n(1)({target:"Function",proto:!0},{bind:n(140)})},function(e,t,n){"use strict";var o=n(6),r=n(13),a=n(36),i=n(12)("hasInstance"),c=Function.prototype;i in c||r.f(c,i,{value:function(e){if("function"!=typeof this||!o(e))return!1;if(!o(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var o=n(9),r=n(13).f,a=Function.prototype,i=a.toString,c=/^\s*function ([^ (]*)/;!o||"name"in a||r(a,"name",{configurable:!0,get:function(){try{return i.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var o=n(5);n(44)(o.JSON,"JSON",!0)},function(e,t,n){"use strict";var o=n(78),r=n(141);e.exports=o("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(1),r=n(142),a=Math.acosh,i=Math.log,c=Math.sqrt,l=Math.LN2;o({target:"Math",stat:!0,forced:!a||710!=Math.floor(a(Number.MAX_VALUE))||a(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?i(e)+l:r(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var o=n(1),r=Math.asinh,a=Math.log,i=Math.sqrt;o({target:"Math",stat:!0,forced:!(r&&1/r(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):a(e+i(e*e+1)):e}})},function(e,t,n){"use strict";var o=n(1),r=Math.atanh,a=Math.log;o({target:"Math",stat:!0,forced:!(r&&1/r(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:a((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var o=n(1),r=n(105),a=Math.abs,i=Math.pow;o({target:"Math",stat:!0},{cbrt:function(e){return r(e=+e)*i(a(e),1/3)}})},function(e,t,n){"use strict";var o=n(1),r=Math.floor,a=Math.log,i=Math.LOG2E;o({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-r(a(e+.5)*i):32}})},function(e,t,n){"use strict";var o=n(1),r=n(80),a=Math.cosh,i=Math.abs,c=Math.E;o({target:"Math",stat:!0,forced:!a||a(710)===Infinity},{cosh:function(e){var t=r(i(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var o=n(1),r=n(80);o({target:"Math",stat:!0,forced:r!=Math.expm1},{expm1:r})},function(e,t,n){"use strict";n(1)({target:"Math",stat:!0},{fround:n(243)})},function(e,t,n){"use strict";var o=n(105),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),u=a(2,-126),d=function(e){return e+1/i-1/i};e.exports=Math.fround||function(e){var t,n,a=r(e),s=o(e);return al||n!=n?s*Infinity:s*n}},function(e,t,n){"use strict";var o=n(1),r=Math.hypot,a=Math.abs,i=Math.sqrt;o({target:"Math",stat:!0,forced:!!r&&r(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,o,r=0,c=0,l=arguments.length,u=0;c0?(o=n/u)*o:n;return u===Infinity?Infinity:u*i(r)}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=Math.imul;o({target:"Math",stat:!0,forced:r((function(){return-5!=a(4294967295,5)||2!=a.length}))},{imul:function(e,t){var n=+e,o=+t,r=65535&n,a=65535&o;return 0|r*a+((65535&n>>>16)*a+r*(65535&o>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var o=n(1),r=Math.log,a=Math.LOG10E;o({target:"Math",stat:!0},{log10:function(e){return r(e)*a}})},function(e,t,n){"use strict";n(1)({target:"Math",stat:!0},{log1p:n(142)})},function(e,t,n){"use strict";var o=n(1),r=Math.log,a=Math.LN2;o({target:"Math",stat:!0},{log2:function(e){return r(e)/a}})},function(e,t,n){"use strict";n(1)({target:"Math",stat:!0},{sign:n(105)})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(80),i=Math.abs,c=Math.exp,l=Math.E;o({target:"Math",stat:!0,forced:r((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return i(e=+e)<1?(a(e)-a(-e))/2:(c(e-1)-c(-e-1))*(l/2)}})},function(e,t,n){"use strict";var o=n(1),r=n(80),a=Math.exp;o({target:"Math",stat:!0},{tanh:function(e){var t=r(e=+e),n=r(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(a(e)+a(-e))}})},function(e,t,n){"use strict";n(44)(Math,"Math",!0)},function(e,t,n){"use strict";var o=n(1),r=Math.ceil,a=Math.floor;o({target:"Math",stat:!0},{trunc:function(e){return(e>0?a:r)(e)}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(24),c=n(16),l=n(32),u=n(79),d=n(33),s=n(4),p=n(43),m=n(48).f,f=n(21).f,h=n(13).f,C=n(56).trim,b="Number",g=r[b],N=g.prototype,v=l(p(N))==b,V=function(e){var t,n,o,r,a,i,c,l,u=d(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=C(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+u}for(i=(a=u.slice(2)).length,c=0;cr)return NaN;return parseInt(a,o)}return+u};if(a(b,!g(" 0o1")||!g("0b1")||g("+0x1"))){for(var y,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(v?s((function(){N.valueOf.call(n)})):l(n)!=b)?u(new g(V(t)),n,_):V(t)},k=o?m(g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;k.length>x;x++)c(g,y=k[x])&&!c(_,y)&&h(_,y,f(g,y));_.prototype=N,N.constructor=_,i(r,b,_)}},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{isFinite:n(257)})},function(e,t,n){"use strict";var o=n(5).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{isInteger:n(143)})},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var o=n(1),r=n(143),a=Math.abs;o({target:"Number",stat:!0},{isSafeInteger:function(e){return r(e)&&a(e)<=9007199254740991}})},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(1)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var o=n(1),r=n(264);o({target:"Number",stat:!0,forced:Number.parseFloat!=r},{parseFloat:r})},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseFloat,c=1/i(a+"-0")!=-Infinity;e.exports=c?function(e){var t=r(String(e)),n=i(t);return 0===n&&"-"==t.charAt(0)?-0:n}:i},function(e,t,n){"use strict";var o=n(1),r=n(144);o({target:"Number",stat:!0,forced:Number.parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o=n(1),r=n(30),a=n(267),i=n(104),c=n(4),l=1..toFixed,u=Math.floor,d=function p(e,t,n){return 0===t?n:t%2==1?p(e,t-1,n*e):p(e*e,t/2,n)},s=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t};o({target:"Number",proto:!0,forced:l&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){l.call({})}))},{toFixed:function(e){var t,n,o,c,l=a(this),p=r(e),m=[0,0,0,0,0,0],f="",h="0",C=function(e,t){for(var n=-1,o=t;++n<6;)o+=e*m[n],m[n]=o%1e7,o=u(o/1e7)},b=function(e){for(var t=6,n=0;--t>=0;)n+=m[t],m[t]=u(n/e),n=n%e*1e7},g=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==m[e]){var n=String(m[e]);t=""===t?n:t+i.call("0",7-n.length)+n}return t};if(p<0||p>20)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(f="-",l=-l),l>1e-21)if(n=(t=s(l*d(2,69,1))-69)<0?l*d(2,-t,1):l/d(2,t,1),n*=4503599627370496,(t=52-t)>0){for(C(0,n),o=p;o>=7;)C(1e7,0),o-=7;for(C(d(10,o,1),0),o=t-1;o>=23;)b(1<<23),o-=23;b(1<0?f+((c=h.length)<=p?"0."+i.call("0",p-c)+h:h.slice(0,c-p)+"."+h.slice(c-p)):f+h}})},function(e,t,n){"use strict";var o=n(32);e.exports=function(e){if("number"!=typeof e&&"Number"!=o(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var o=n(1),r=n(269);o({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(62),i=n(94),c=n(71),l=n(14),u=n(57),d=Object.assign,s=Object.defineProperty;e.exports=!d||r((function(){if(o&&1!==d({b:1},d(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||"abcdefghijklmnopqrst"!=a(d({},t)).join("")}))?function(e,t){for(var n=l(e),r=arguments.length,d=1,s=i.f,p=c.f;r>d;)for(var m,f=u(arguments[d++]),h=s?a(f).concat(s(f)):a(f),C=h.length,b=0;C>b;)m=h[b++],o&&!p.call(f,m)||(n[m]=f[m]);return n}:d},function(e,t,n){"use strict";n(1)({target:"Object",stat:!0,sham:!n(9)},{create:n(43)})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineGetter__:function(e,t){l.f(i(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(1),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperties:n(128)})},function(e,t,n){"use strict";var o=n(1),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:n(13).f})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineSetter__:function(e,t){l.f(i(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(1),r=n(145).entries;o({target:"Object",stat:!0},{entries:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(1),r=n(67),a=n(4),i=n(6),c=n(51).onFreeze,l=Object.freeze;o({target:"Object",stat:!0,forced:a((function(){l(1)})),sham:!r},{freeze:function(e){return l&&i(e)?l(c(e)):e}})},function(e,t,n){"use strict";var o=n(1),r=n(68),a=n(50);o({target:"Object",stat:!0},{fromEntries:function(e){var t={};return r(e,(function(e,n){a(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(25),i=n(21).f,c=n(9),l=r((function(){i(1)}));o({target:"Object",stat:!0,forced:!c||l,sham:!c},{getOwnPropertyDescriptor:function(e,t){return i(a(e),t)}})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(92),i=n(25),c=n(21),l=n(50);o({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,n,o=i(e),r=c.f,u=a(o),d={},s=0;u.length>s;)(n=r(o,t=u[s++]))!==undefined&&l(d,t,n);return d}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(130).f;o({target:"Object",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:a})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(14),i=n(36),c=n(102);o({target:"Object",stat:!0,forced:r((function(){i(1)})),sham:!c},{getPrototypeOf:function(e){return i(a(e))}})},function(e,t,n){"use strict";n(1)({target:"Object",stat:!0},{is:n(146)})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(6),i=Object.isExtensible;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isExtensible:function(e){return!!a(e)&&(!i||i(e))}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(6),i=Object.isFrozen;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isFrozen:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(1),r=n(4),a=n(6),i=Object.isSealed;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isSealed:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(1),r=n(14),a=n(62);o({target:"Object",stat:!0,forced:n(4)((function(){a(1)}))},{keys:function(e){return a(r(e))}})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(21).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupGetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.get}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(21).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupSetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.set}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(1),r=n(6),a=n(51).onFreeze,i=n(67),c=n(4),l=Object.preventExtensions;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{preventExtensions:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";var o=n(1),r=n(6),a=n(51).onFreeze,i=n(67),c=n(4),l=Object.seal;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{seal:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";n(1)({target:"Object",stat:!0},{setPrototypeOf:n(53)})},function(e,t,n){"use strict";var o=n(100),r=n(24),a=n(293);o||r(Object.prototype,"toString",a,{unsafe:!0})},function(e,t,n){"use strict";var o=n(100),r=n(74);e.exports=o?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,n){"use strict";var o=n(1),r=n(145).values;o({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(1),r=n(144);o({global:!0,forced:parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o,r,a,i,c=n(1),l=n(38),u=n(5),d=n(35),s=n(147),p=n(24),m=n(66),f=n(44),h=n(54),C=n(6),b=n(31),g=n(55),N=n(32),v=n(90),V=n(68),y=n(75),_=n(46),k=n(106).set,x=n(149),L=n(150),B=n(297),w=n(151),S=n(298),I=n(34),T=n(61),A=n(12),P=n(96),E=A("species"),M="Promise",R=I.get,O=I.set,F=I.getterFor(M),D=s,j=u.TypeError,z=u.document,G=u.process,H=d("fetch"),U=w.f,K=U,W="process"==N(G),Y=!!(z&&z.createEvent&&u.dispatchEvent),q=0,$=T(M,(function(){if(!(v(D)!==String(D))){if(66===P)return!0;if(!W&&"function"!=typeof PromiseRejectionEvent)return!0}if(l&&!D.prototype["finally"])return!0;if(P>=51&&/native code/.test(D))return!1;var e=D.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[E]=t,!(e.then((function(){}))instanceof t)})),Q=$||!y((function(e){D.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!C(e)||"function"!=typeof(t=e.then))&&t},J=function(e,t,n){if(!t.notified){t.notified=!0;var o=t.reactions;x((function(){for(var r=t.value,a=1==t.state,i=0;o.length>i;){var c,l,u,d=o[i++],s=a?d.ok:d.fail,p=d.resolve,m=d.reject,f=d.domain;try{s?(a||(2===t.rejection&&ne(e,t),t.rejection=1),!0===s?c=r:(f&&f.enter(),c=s(r),f&&(f.exit(),u=!0)),c===d.promise?m(j("Promise-chain cycle")):(l=X(c))?l.call(c,p,m):p(c)):m(r)}catch(h){f&&!u&&f.exit(),m(h)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&ee(e,t)}))}},Z=function(e,t,n){var o,r;Y?((o=z.createEvent("Event")).promise=t,o.reason=n,o.initEvent(e,!1,!0),u.dispatchEvent(o)):o={promise:t,reason:n},(r=u["on"+e])?r(o):"unhandledrejection"===e&&B("Unhandled promise rejection",n)},ee=function(e,t){k.call(u,(function(){var n,o=t.value;if(te(t)&&(n=S((function(){W?G.emit("unhandledRejection",o,e):Z("unhandledrejection",e,o)})),t.rejection=W||te(t)?2:1,n.error))throw n.value}))},te=function(e){return 1!==e.rejection&&!e.parent},ne=function(e,t){k.call(u,(function(){W?G.emit("rejectionHandled",e):Z("rejectionhandled",e,t.value)}))},oe=function(e,t,n,o){return function(r){e(t,n,r,o)}},re=function(e,t,n,o){t.done||(t.done=!0,o&&(t=o),t.value=n,t.state=2,J(e,t,!0))},ae=function ie(e,t,n,o){if(!t.done){t.done=!0,o&&(t=o);try{if(e===n)throw j("Promise can't be resolved itself");var r=X(n);r?x((function(){var o={done:!1};try{r.call(n,oe(ie,e,o,t),oe(re,e,o,t))}catch(a){re(e,o,a,t)}})):(t.value=n,t.state=1,J(e,t,!1))}catch(a){re(e,{done:!1},a,t)}}};$&&(D=function(e){g(this,D,M),b(e),o.call(this);var t=R(this);try{e(oe(ae,this,t),oe(re,this,t))}catch(n){re(this,t,n)}},(o=function(e){O(this,{type:M,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:q,value:undefined})}).prototype=m(D.prototype,{then:function(e,t){var n=F(this),o=U(_(this,D));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=W?G.domain:undefined,n.parent=!0,n.reactions.push(o),n.state!=q&&J(this,n,!1),o.promise},"catch":function(e){return this.then(undefined,e)}}),r=function(){var e=new o,t=R(e);this.promise=e,this.resolve=oe(ae,e,t),this.reject=oe(re,e,t)},w.f=U=function(e){return e===D||e===a?new r(e):K(e)},l||"function"!=typeof s||(i=s.prototype.then,p(s.prototype,"then",(function(e,t){var n=this;return new D((function(e,t){i.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof H&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return L(D,H.apply(u,arguments))}}))),c({global:!0,wrap:!0,forced:$},{Promise:D}),f(D,M,!1,!0),h(M),a=d(M),c({target:M,stat:!0,forced:$},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:M,stat:!0,forced:l||$},{resolve:function(e){return L(l&&this===a?D:this,e)}}),c({target:M,stat:!0,forced:Q},{all:function(e){var t=this,n=U(t),o=n.resolve,r=n.reject,a=S((function(){var n=b(t.resolve),a=[],i=0,c=1;V(e,(function(e){var l=i++,u=!1;a.push(undefined),c++,n.call(t,e).then((function(e){u||(u=!0,a[l]=e,--c||o(a))}),r)})),--c||o(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=U(t),o=n.reject,r=S((function(){var r=b(t.resolve);V(e,(function(e){r.call(t,e).then(n.resolve,o)}))}));return r.error&&o(r.value),n.promise}})},function(e,t,n){"use strict";var o=n(5);e.exports=function(e,t){var n=o.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var o=n(1),r=n(38),a=n(147),i=n(4),c=n(35),l=n(46),u=n(150),d=n(24);o({target:"Promise",proto:!0,real:!0,forced:!!a&&i((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=l(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then((function(){return n}))}:e,n?function(n){return u(t,e()).then((function(){throw n}))}:e)}}),r||"function"!=typeof a||a.prototype["finally"]||d(a.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var o=n(1),r=n(35),a=n(31),i=n(8),c=n(4),l=r("Reflect","apply"),u=Function.apply;o({target:"Reflect",stat:!0,forced:!c((function(){l((function(){}))}))},{apply:function(e,t,n){return a(e),i(n),l?l(e,t,n):u.call(e,t,n)}})},function(e,t,n){"use strict";var o=n(1),r=n(35),a=n(31),i=n(8),c=n(6),l=n(43),u=n(140),d=n(4),s=r("Reflect","construct"),p=d((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),m=!d((function(){s((function(){}))})),f=p||m;o({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){a(e),i(t);var n=arguments.length<3?e:a(arguments[2]);if(m&&!p)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(u.apply(e,o))}var r=n.prototype,d=l(c(r)?r:Object.prototype),f=Function.apply.call(e,d,t);return c(f)?f:d}})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(8),i=n(33),c=n(13);o({target:"Reflect",stat:!0,forced:n(4)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!r},{defineProperty:function(e,t,n){a(e);var o=i(t,!0);a(n);try{return c.f(e,o,n),!0}catch(r){return!1}}})},function(e,t,n){"use strict";var o=n(1),r=n(8),a=n(21).f;o({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=a(r(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var o=n(1),r=n(6),a=n(8),i=n(16),c=n(21),l=n(36);o({target:"Reflect",stat:!0},{get:function u(e,t){var n,o,d=arguments.length<3?e:arguments[2];return a(e)===d?e[t]:(n=c.f(e,t))?i(n,"value")?n.value:n.get===undefined?undefined:n.get.call(d):r(o=l(e))?u(o,t,d):void 0}})},function(e,t,n){"use strict";var o=n(1),r=n(9),a=n(8),i=n(21);o({target:"Reflect",stat:!0,sham:!r},{getOwnPropertyDescriptor:function(e,t){return i.f(a(e),t)}})},function(e,t,n){"use strict";var o=n(1),r=n(8),a=n(36);o({target:"Reflect",stat:!0,sham:!n(102)},{getPrototypeOf:function(e){return a(r(e))}})},function(e,t,n){"use strict";n(1)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var o=n(1),r=n(8),a=Object.isExtensible;o({target:"Reflect",stat:!0},{isExtensible:function(e){return r(e),!a||a(e)}})},function(e,t,n){"use strict";n(1)({target:"Reflect",stat:!0},{ownKeys:n(92)})},function(e,t,n){"use strict";var o=n(1),r=n(35),a=n(8);o({target:"Reflect",stat:!0,sham:!n(67)},{preventExtensions:function(e){a(e);try{var t=r("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(1),r=n(8),a=n(6),i=n(16),c=n(4),l=n(13),u=n(21),d=n(36),s=n(47);o({target:"Reflect",stat:!0,forced:c((function(){var e=l.f({},"a",{configurable:!0});return!1!==Reflect.set(d(e),"a",1,e)}))},{set:function p(e,t,n){var o,c,m=arguments.length<4?e:arguments[3],f=u.f(r(e),t);if(!f){if(a(c=d(e)))return p(c,t,n,m);f=s(0)}if(i(f,"value")){if(!1===f.writable||!a(m))return!1;if(o=u.f(m,t)){if(o.get||o.set||!1===o.writable)return!1;o.value=n,l.f(m,t,o)}else l.f(m,t,s(0,n));return!0}return f.set!==undefined&&(f.set.call(m,n),!0)}})},function(e,t,n){"use strict";var o=n(1),r=n(8),a=n(137),i=n(53);i&&o({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){r(e),a(t);try{return i(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(79),c=n(13).f,l=n(48).f,u=n(107),d=n(83),s=n(24),p=n(4),m=n(54),f=n(12)("match"),h=r.RegExp,C=h.prototype,b=/a/g,g=/a/g,N=new h(b)!==b;if(o&&a("RegExp",!N||p((function(){return g[f]=!1,h(b)!=b||h(g)==g||"/a/i"!=h(b,"i")})))){for(var v=function(e,t){var n=this instanceof v,o=u(e),r=t===undefined;return!n&&o&&e.constructor===v&&r?e:i(N?new h(o&&!r?e.source:e,t):h((o=e instanceof v)?e.source:e,o&&r?d.call(e):t),n?this:C,v)},V=function(e){e in v||c(v,e,{configurable:!0,get:function(){return h[e]},set:function(t){h[e]=t}})},y=l(h),_=0;y.length>_;)V(y[_++]);C.constructor=v,v.prototype=C,s(r,"RegExp",v)}m("RegExp")},function(e,t,n){"use strict";var o=n(1),r=n(84);o({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(83);o&&"g"!=/./g.flags&&r.f(RegExp.prototype,"flags",{configurable:!0,get:a})},function(e,t,n){"use strict";var o=n(24),r=n(8),a=n(4),i=n(83),c=RegExp.prototype,l=c.toString,u=a((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),d="toString"!=l.name;(u||d)&&o(RegExp.prototype,"toString",(function(){var e=r(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?i.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var o=n(78),r=n(141);e.exports=o("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(1),r=n(108).codeAt;o({target:"String",proto:!0},{codePointAt:function(e){return r(this,e)}})},function(e,t,n){"use strict";var o,r=n(1),a=n(21).f,i=n(11),c=n(109),l=n(23),u=n(110),d=n(38),s="".endsWith,p=Math.min,m=u("endsWith");r({target:"String",proto:!0,forced:!!(d||m||(o=a(String.prototype,"endsWith"),!o||o.writable))&&!m},{endsWith:function(e){var t=String(l(this));c(e);var n=arguments.length>1?arguments[1]:undefined,o=i(t.length),r=n===undefined?o:p(i(n),o),a=String(e);return s?s.call(t,a,r):t.slice(r-a.length,r)===a}})},function(e,t,n){"use strict";var o=n(1),r=n(42),a=String.fromCharCode,i=String.fromCodePoint;o({target:"String",stat:!0,forced:!!i&&1!=i.length},{fromCodePoint:function(e){for(var t,n=[],o=arguments.length,i=0;o>i;){if(t=+arguments[i++],r(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var o=n(1),r=n(109),a=n(23);o({target:"String",proto:!0,forced:!n(110)("includes")},{includes:function(e){return!!~String(a(this)).indexOf(r(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(108).charAt,r=n(34),a=n(101),i=r.set,c=r.getterFor("String Iterator");a(String,"String",(function(e){i(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,r=t.index;return r>=n.length?{value:undefined,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(11),i=n(23),c=n(111),l=n(86);o("match",1,(function(e,t,n){return[function(t){var n=i(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var i=r(e),u=String(this);if(!i.global)return l(i,u);var d=i.unicode;i.lastIndex=0;for(var s,p=[],m=0;null!==(s=l(i,u));){var f=String(s[0]);p[m]=f,""===f&&(i.lastIndex=c(u,a(i.lastIndex),d)),m++}return 0===m?null:p}]}))},function(e,t,n){"use strict";var o=n(1),r=n(103).end;o({target:"String",proto:!0,forced:n(152)},{padEnd:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(103).start;o({target:"String",proto:!0,forced:n(152)},{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(1),r=n(25),a=n(11);o({target:"String",stat:!0},{raw:function(e){for(var t=r(e.raw),n=a(t.length),o=arguments.length,i=[],c=0;n>c;)i.push(String(t[c++])),c]*>)/g,h=/\$([$&'`]|\d\d?)/g;o("replace",2,(function(e,t,n){return[function(n,o){var r=l(this),a=n==undefined?undefined:n[e];return a!==undefined?a.call(n,r,o):t.call(String(r),n,o)},function(e,a){var l=n(t,e,this,a);if(l.done)return l.value;var m=r(e),f=String(this),h="function"==typeof a;h||(a=String(a));var C=m.global;if(C){var b=m.unicode;m.lastIndex=0}for(var g=[];;){var N=d(m,f);if(null===N)break;if(g.push(N),!C)break;""===String(N[0])&&(m.lastIndex=u(f,i(m.lastIndex),b))}for(var v,V="",y=0,_=0;_=y&&(V+=f.slice(y,x)+I,y=x+k.length)}return V+f.slice(y)}];function o(e,n,o,r,i,c){var l=o+e.length,u=r.length,d=h;return i!==undefined&&(i=a(i),d=f),t.call(c,d,(function(t,a){var c;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,o);case"'":return n.slice(l);case"<":c=i[a.slice(1,-1)];break;default:var d=+a;if(0===d)return t;if(d>u){var s=m(d/10);return 0===s?t:s<=u?r[s-1]===undefined?a.charAt(1):r[s-1]+a.charAt(1):t}c=r[d-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(23),i=n(146),c=n(86);o("search",1,(function(e,t,n){return[function(t){var n=a(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var a=r(e),l=String(this),u=a.lastIndex;i(u,0)||(a.lastIndex=0);var d=c(a,l);return i(a.lastIndex,u)||(a.lastIndex=u),null===d?-1:d.index}]}))},function(e,t,n){"use strict";var o=n(85),r=n(107),a=n(8),i=n(23),c=n(46),l=n(111),u=n(11),d=n(86),s=n(84),p=n(4),m=[].push,f=Math.min,h=!p((function(){return!RegExp(4294967295,"y")}));o("split",2,(function(e,t,n){var o;return o="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var o=String(i(this)),a=n===undefined?4294967295:n>>>0;if(0===a)return[];if(e===undefined)return[o];if(!r(e))return t.call(o,e,a);for(var c,l,u,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,h=new RegExp(e.source,p+"g");(c=s.call(h,o))&&!((l=h.lastIndex)>f&&(d.push(o.slice(f,c.index)),c.length>1&&c.index=a));)h.lastIndex===c.index&&h.lastIndex++;return f===o.length?!u&&h.test("")||d.push(""):d.push(o.slice(f)),d.length>a?d.slice(0,a):d}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=i(this),a=t==undefined?undefined:t[e];return a!==undefined?a.call(t,r,n):o.call(String(r),t,n)},function(e,r){var i=n(o,e,this,r,o!==t);if(i.done)return i.value;var s=a(e),p=String(this),m=c(s,RegExp),C=s.unicode,b=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),g=new m(h?s:"^(?:"+s.source+")",b),N=r===undefined?4294967295:r>>>0;if(0===N)return[];if(0===p.length)return null===d(g,p)?[p]:[];for(var v=0,V=0,y=[];V1?arguments[1]:undefined,t.length)),o=String(e);return s?s.call(t,o,n):t.slice(n,n+o.length)===o}})},function(e,t,n){"use strict";var o=n(1),r=n(56).trim;o({target:"String",proto:!0,forced:n(112)("trim")},{trim:function(){return r(this)}})},function(e,t,n){"use strict";var o=n(1),r=n(56).end,a=n(112)("trimEnd"),i=a?function(){return r(this)}:"".trimEnd;o({target:"String",proto:!0,forced:a},{trimEnd:i,trimRight:i})},function(e,t,n){"use strict";var o=n(1),r=n(56).start,a=n(112)("trimStart"),i=a?function(){return r(this)}:"".trimStart;o({target:"String",proto:!0,forced:a},{trimStart:i,trimLeft:i})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("anchor")},{anchor:function(e){return r(this,"a","name",e)}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("big")},{big:function(){return r(this,"big","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("blink")},{blink:function(){return r(this,"blink","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("bold")},{bold:function(){return r(this,"b","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("fixed")},{fixed:function(){return r(this,"tt","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontcolor")},{fontcolor:function(e){return r(this,"font","color",e)}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontsize")},{fontsize:function(e){return r(this,"font","size",e)}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("italics")},{italics:function(){return r(this,"i","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("link")},{link:function(e){return r(this,"a","href",e)}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("small")},{small:function(){return r(this,"small","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("strike")},{strike:function(){return r(this,"strike","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("sub")},{sub:function(){return r(this,"sub","","")}})},function(e,t,n){"use strict";var o=n(1),r=n(28);o({target:"String",proto:!0,forced:n(29)("sup")},{sup:function(){return r(this,"sup","","")}})},function(e,t,n){"use strict";n(40)("Float32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(30);e.exports=function(e){var t=o(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(40)("Float64",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}),!0)},function(e,t,n){"use strict";n(40)("Uint16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(7),r=n(132),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(e,t){return r.call(a(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(19).every,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("every",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(97),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("fill",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(19).filter,a=n(46),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("filter",(function(e){for(var t=r(i(this),e,arguments.length>1?arguments[1]:undefined),n=a(this,this.constructor),o=0,l=t.length,u=new(c(n))(l);l>o;)u[o]=t[o++];return u}))},function(e,t,n){"use strict";var o=n(7),r=n(19).find,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("find",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(19).findIndex,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("findIndex",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(19).forEach,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("forEach",(function(e){r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(113);(0,n(7).exportTypedArrayStaticMethod)("from",n(154),o)},function(e,t,n){"use strict";var o=n(7),r=n(60).includes,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("includes",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(60).indexOf,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("indexOf",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(135),i=n(12)("iterator"),c=o.Uint8Array,l=a.values,u=a.keys,d=a.entries,s=r.aTypedArray,p=r.exportTypedArrayMethod,m=c&&c.prototype[i],f=!!m&&("values"==m.name||m.name==undefined),h=function(){return l.call(s(this))};p("entries",(function(){return d.call(s(this))})),p("keys",(function(){return u.call(s(this))})),p("values",h,!f),p(i,h,!f)},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].join;a("join",(function(e){return i.apply(r(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(138),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("lastIndexOf",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(19).map,a=n(46),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("map",(function(e){return r(i(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(a(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var o=n(7),r=n(113),a=o.aTypedArrayConstructor;(0,o.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(a(this))(t);t>e;)n[e]=arguments[e++];return n}),r)},function(e,t,n){"use strict";var o=n(7),r=n(76).left,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduce",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(76).right,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduceRight",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=Math.floor;a("reverse",(function(){for(var e,t=r(this).length,n=i(t/2),o=0;o1?arguments[1]:undefined,1),n=this.length,o=i(e),c=r(o.length),u=0;if(c+t>n)throw RangeError("Wrong length");for(;ua;)d[a]=n[a++];return d}),a((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var o=n(7),r=n(19).some,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("some",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].sort;a("sort",(function(e){return i.call(r(this),e)}))},function(e,t,n){"use strict";var o=n(7),r=n(11),a=n(42),i=n(46),c=o.aTypedArray;(0,o.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),o=n.length,l=a(e,o);return new(i(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,r((t===undefined?o:a(t,o))-l))}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(4),i=o.Int8Array,c=r.aTypedArray,l=r.exportTypedArrayMethod,u=[].toLocaleString,d=[].slice,s=!!i&&a((function(){u.call(new i(1))}));l("toLocaleString",(function(){return u.apply(s?d.call(c(this)):c(this),arguments)}),a((function(){return[1,2].toLocaleString()!=new i([1,2]).toLocaleString()}))||!a((function(){i.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var o=n(7).exportTypedArrayMethod,r=n(4),a=n(5).Uint8Array,i=a&&a.prototype||{},c=[].toString,l=[].join;r((function(){c.call({})}))&&(c=function(){return l.call(this)});var u=i.toString!=c;o("toString",c,u)},function(e,t,n){"use strict";var o,r=n(5),a=n(66),i=n(51),c=n(78),l=n(155),u=n(6),d=n(34).enforce,s=n(123),p=!r.ActiveXObject&&"ActiveXObject"in r,m=Object.isExtensible,f=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},h=e.exports=c("WeakMap",f,l);if(s&&p){o=l.getConstructor(f,"WeakMap",!0),i.REQUIRED=!0;var C=h.prototype,b=C["delete"],g=C.has,N=C.get,v=C.set;a(C,{"delete":function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),b.call(this,e)||t.frozen["delete"](e)}return b.call(this,e)},has:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),g.call(this,e)||t.frozen.has(e)}return g.call(this,e)},get:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),g.call(this,e)?N.call(this,e):t.frozen.get(e)}return N.call(this,e)},set:function(e,t){if(u(e)&&!m(e)){var n=d(this);n.frozen||(n.frozen=new o),g.call(this,e)?v.call(this,e,t):n.frozen.set(e,t)}else v.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(78)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(155))},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(106);o({global:!0,bind:!0,enumerable:!0,forced:!r.setImmediate||!r.clearImmediate},{setImmediate:a.set,clearImmediate:a.clear})},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(149),i=n(32),c=r.process,l="process"==i(c);o({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=l&&c.domain;a(t?t.bind(e):e)}})},function(e,t,n){"use strict";var o=n(1),r=n(5),a=n(73),i=[].slice,c=function(e){return function(t,n){var o=arguments.length>2,r=o?i.call(arguments,2):undefined;return e(o?function(){("function"==typeof t?t:Function(t)).apply(this,r)}:t,n)}};o({global:!0,bind:!0,forced:/MSIE .\./.test(a)},{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ie,t._HI=D,t._M=Te,t._MCCC=Me,t._ME=Pe,t._MFCC=Re,t._MP=we,t._MR=ve,t.__render=ze,t.createComponentVNode=function(e,t,n,o,r){var i=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),o,function(e,t,n){var o=(32768&e?t.render:t).defaultProps;if(a(o))return n;if(a(n))return d(o,null);return w(n,o)}(e,t,n),function(e,t,n){if(4&e)return n;var o=(32768&e?t.render:t).defaultHooks;if(a(o))return n;if(a(n))return o;return w(n,o)}(e,t,r),t);x.createVNode&&x.createVNode(i);return i},t.createFragment=E,t.createPortal=function(e,t){var n=D(e);return A(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,o,r){e||(e=t),Ge(n,e,o,r)}},t.createTextVNode=P,t.createVNode=A,t.directClone=M,t.findDOMfromVNode=v,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case m:return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&a(e.children)&&F(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?d(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=Ge,t.rerender=qe,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var o=Array.isArray;function r(e){var t=typeof e;return"string"===t||"number"===t}function a(e){return null==e}function i(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function l(e){return"string"==typeof e}function u(e){return null===e}function d(e,t){var n={};if(e)for(var o in e)n[o]=e[o];if(t)for(var r in t)n[r]=t[r];return n}function s(e){return!u(e)&&"object"==typeof e}var p={};t.EMPTY_OBJ=p;var m="$F";function f(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function C(e,t,n){u(n)?h(e,t):e.insertBefore(t,n)}function b(e,t){e.removeChild(t)}function g(e){for(var t;(t=e.shift())!==undefined;)t()}function N(e,t,n){var o=e.children;return 4&n?o.$LI:8192&n?2===e.childFlags?o:o[t?0:o.length-1]:o}function v(e,t){for(var n;e;){if(2033&(n=e.flags))return e.dom;e=N(e,t,n)}return null}function V(e,t){do{var n=e.flags;if(2033&n)return void b(t,e.dom);var o=e.children;if(4&n&&(e=o.$LI),8&n&&(e=o),8192&n){if(2!==e.childFlags){for(var r=0,a=o.length;r0,f=u(p),h=l(p)&&p[0]===I;m||f||h?(n=n||t.slice(0,d),(m||h)&&(s=M(s)),(f||h)&&(s.key=I+d),n.push(s)):n&&n.push(s),s.flags|=65536}}a=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=M(t)),a=2;return e.children=n,e.childFlags=a,e}function D(e){return i(e)||r(e)?P(e,null):o(e)?E(e,0,null):16384&e.flags?M(e):e}var j="http://www.w3.org/1999/xlink",z="http://www.w3.org/XML/1998/namespace",G={"xlink:actuate":j,"xlink:arcrole":j,"xlink:href":j,"xlink:role":j,"xlink:show":j,"xlink:title":j,"xlink:type":j,"xml:base":z,"xml:lang":z,"xml:space":z};function H(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var U=H(0),K=H(null),W=H(!0);function Y(e,t){var n=t.$EV;return n||(n=t.$EV=H(null)),n[e]||1==++U[e]&&(K[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,Z(t))}}(e);return document.addEventListener(f(e),t),t}(e)),n}function q(e,t){var n=t.$EV;n&&n[e]&&(0==--U[e]&&(document.removeEventListener(f(e),K[e]),K[e]=null),n[e]=null)}function $(e,t,n,o){var r=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&r.disabled)return;var a=r.$EV;if(a){var i=a[n];if(i&&(o.dom=r,i.event?i.event(i.data,e):i(e),e.cancelBubble))return}r=r.parentNode}while(!u(r))}function Q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function X(){return this.defaultPrevented}function J(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=X,e.isPropagationStopped=J,e.stopPropagation=Q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function ee(e,t,n){if(e[t]){var o=e[t];o.event?o.event(o.data,n):o(n)}else{var r=t.toLowerCase();e[r]&&e[r](n)}}function te(e,t){var n=function(n){var o=this.$V;if(o){var r=o.props||p,a=o.dom;if(l(e))ee(r,e,n);else for(var i=0;i-1&&t.options[i]&&(c=t.options[i].value),n&&a(c)&&(c=e.defaultValue),le(o,c)}}var se,pe,me=te("onInput",he),fe=te("onChange");function he(e,t,n){var o=e.value,r=t.value;if(a(o)){if(n){var i=e.defaultValue;a(i)||i===r||(t.defaultValue=i,t.value=i)}}else r!==o&&(t.defaultValue=o,t.value=o)}function Ce(e,t,n,o,r,a){64&e?ce(o,n):256&e?de(o,n,r,t):128&e&&he(o,n,r),a&&(n.$V=t)}function be(e,t,n){64&e?function(e,t){oe(t.type)?(ne(e,"change",ae),ne(e,"click",ie)):ne(e,"input",re)}(t,n):256&e?function(e){ne(e,"change",ue)}(t):128&e&&function(e,t){ne(e,"input",me),t.onChange&&ne(e,"change",fe)}(t,n)}function ge(e){return e.type&&oe(e.type)?!a(e.checked):!a(e.value)}function Ne(e){e&&!S(e,null)&&e.current&&(e.current=null)}function ve(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){S(e,t)||void 0===e.current||(e.current=t)}))}function Ve(e,t){ye(e),V(e,t)}function ye(e){var t,n=e.flags,o=e.children;if(481&n){t=e.ref;var r=e.props;Ne(t);var i=e.childFlags;if(!u(r))for(var l=Object.keys(r),d=0,s=l.length;d0;for(var c in i&&(a=ge(n))&&be(t,o,n),n)Be(c,null,n[c],o,r,a,null);i&&Ce(t,e,o,n,!0,a)}function Se(e,t,n){var o=D(e.render(t,e.state,n)),r=n;return c(e.getChildContext)&&(r=d(n,e.getChildContext())),e.$CX=r,o}function Ie(e,t,n,o,r,a){var i=new t(n,o),l=i.$N=Boolean(t.getDerivedStateFromProps||i.getSnapshotBeforeUpdate);if(i.$SVG=r,i.$L=a,e.children=i,i.$BS=!1,i.context=o,i.props===p&&(i.props=n),l)i.state=_(i,n,i.state);else if(c(i.componentWillMount)){i.$BR=!0,i.componentWillMount();var d=i.$PS;if(!u(d)){var s=i.state;if(u(s))i.state=d;else for(var m in d)s[m]=d[m];i.$PS=null}i.$BR=!1}return i.$LI=Se(i,n,o),i}function Te(e,t,n,o,r,a){var i=e.flags|=16384;481&i?Pe(e,t,n,o,r,a):4&i?function(e,t,n,o,r,a){var i=Ie(e,e.type,e.props||p,n,o,a);Te(i.$LI,t,i.$CX,o,r,a),Me(e.ref,i,a)}(e,t,n,o,r,a):8&i?(!function(e,t,n,o,r,a){Te(e.children=D(function(e,t){return 32768&e.flags?e.type.render(e.props||p,e.ref,t):e.type(e.props||p,t)}(e,n)),t,n,o,r,a)}(e,t,n,o,r,a),Re(e,a)):512&i||16&i?Ae(e,t,r):8192&i?function(e,t,n,o,r,a){var i=e.children,c=e.childFlags;12&c&&0===i.length&&(c=e.childFlags=2,i=e.children=R());2===c?Te(i,n,r,o,r,a):Ee(i,n,t,o,r,a)}(e,n,t,o,r,a):1024&i&&function(e,t,n,o,r){Te(e.children,e.ref,t,!1,null,r);var a=R();Ae(a,n,o),e.dom=a.dom}(e,n,t,r,a)}function Ae(e,t,n){var o=e.dom=document.createTextNode(e.children);u(t)||C(t,o,n)}function Pe(e,t,n,o,r,i){var c=e.flags,l=e.props,d=e.className,s=e.children,p=e.childFlags,m=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,o=o||(32&c)>0);if(a(d)||""===d||(o?m.setAttribute("class",d):m.className=d),16===p)L(m,s);else if(1!==p){var f=o&&"foreignObject"!==e.type;2===p?(16384&s.flags&&(e.children=s=M(s)),Te(s,m,n,f,null,i)):8!==p&&4!==p||Ee(s,m,n,f,null,i)}u(t)||C(t,m,r),u(l)||we(e,c,l,m,o),ve(e.ref,m,i)}function Ee(e,t,n,o,r,a){for(var i=0;i0,u!==d){var f=u||p;if((c=d||p)!==p)for(var h in(s=(448&r)>0)&&(m=ge(c)),c){var C=f[h],b=c[h];C!==b&&Be(h,C,b,l,o,m,e)}if(f!==p)for(var g in f)a(c[g])&&!a(f[g])&&Be(g,f[g],null,l,o,m,e)}var N=t.children,v=t.className;e.className!==v&&(a(v)?l.removeAttribute("class"):o?l.setAttribute("class",v):l.className=v);4096&r?function(e,t){e.textContent!==t&&(e.textContent=t)}(l,N):Fe(e.childFlags,t.childFlags,e.children,N,l,n,o&&"foreignObject"!==t.type,null,e,i);s&&Ce(r,t,l,c,!1,m);var V=t.ref,y=e.ref;y!==V&&(Ne(y),ve(V,l,i))}(e,t,o,r,m,s):4&m?function(e,t,n,o,r,a,i){var l=t.children=e.children;if(u(l))return;l.$L=i;var s=t.props||p,m=t.ref,f=e.ref,h=l.state;if(!l.$N){if(c(l.componentWillReceiveProps)){if(l.$BR=!0,l.componentWillReceiveProps(s,o),l.$UN)return;l.$BR=!1}u(l.$PS)||(h=d(h,l.$PS),l.$PS=null)}De(l,h,s,n,o,r,!1,a,i),f!==m&&(Ne(f),ve(m,l,i))}(e,t,n,o,r,l,s):8&m?function(e,t,n,o,r,i,l){var u=!0,d=t.props||p,s=t.ref,m=e.props,f=!a(s),h=e.children;f&&c(s.onComponentShouldUpdate)&&(u=s.onComponentShouldUpdate(m,d));if(!1!==u){f&&c(s.onComponentWillUpdate)&&s.onComponentWillUpdate(m,d);var C=t.type,b=D(32768&t.flags?C.render(d,s,o):C(d,o));Oe(h,b,n,o,r,i,l),t.children=b,f&&c(s.onComponentDidUpdate)&&s.onComponentDidUpdate(m,d)}else t.children=h}(e,t,n,o,r,l,s):16&m?function(e,t){var n=t.children,o=t.dom=e.dom;n!==e.children&&(o.nodeValue=n)}(e,t):512&m?t.dom=e.dom:8192&m?function(e,t,n,o,r,a){var i=e.children,c=t.children,l=e.childFlags,u=t.childFlags,d=null;12&u&&0===c.length&&(u=t.childFlags=2,c=t.children=R());var s=0!=(2&u);if(12&l){var p=i.length;(8&l&&8&u||s||!s&&c.length>p)&&(d=v(i[p-1],!1).nextSibling)}Fe(l,u,i,c,n,o,r,d,e,a)}(e,t,n,o,r,s):function(e,t,n,o){var r=e.ref,a=t.ref,c=t.children;if(Fe(e.childFlags,t.childFlags,e.children,c,r,n,!1,null,e,o),t.dom=e.dom,r!==a&&!i(c)){var l=c.dom;b(r,l),h(a,l)}}(e,t,o,s)}function Fe(e,t,n,o,r,a,i,c,l,u){switch(e){case 2:switch(t){case 2:Oe(n,o,r,a,i,c,u);break;case 1:Ve(n,r);break;case 16:ye(n),L(r,o);break;default:!function(e,t,n,o,r,a){ye(e),Ee(t,n,o,r,v(e,!0),a),V(e,n)}(n,o,r,a,i,u)}break;case 1:switch(t){case 2:Te(o,r,a,i,c,u);break;case 1:break;case 16:L(r,o);break;default:Ee(o,r,a,i,c,u)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:L(n,t))}(n,o,r);break;case 2:ke(r),Te(o,r,a,i,c,u);break;case 1:ke(r);break;default:ke(r),Ee(o,r,a,i,c,u)}break;default:switch(t){case 16:_e(n),L(r,o);break;case 2:xe(r,l,n),Te(o,r,a,i,c,u);break;case 1:xe(r,l,n);break;default:var d=0|n.length,s=0|o.length;0===d?s>0&&Ee(o,r,a,i,c,u):0===s?xe(r,l,n):8===t&&8===e?function(e,t,n,o,r,a,i,c,l,u){var d,s,p=a-1,m=i-1,f=0,h=e[f],C=t[f];e:{for(;h.key===C.key;){if(16384&C.flags&&(t[f]=C=M(C)),Oe(h,C,n,o,r,c,u),e[f]=C,++f>p||f>m)break e;h=e[f],C=t[f]}for(h=e[p],C=t[m];h.key===C.key;){if(16384&C.flags&&(t[m]=C=M(C)),Oe(h,C,n,o,r,c,u),e[p]=C,p--,m--,f>p||f>m)break e;h=e[p],C=t[m]}}if(f>p){if(f<=m)for(s=(d=m+1)m)for(;f<=p;)Ve(e[f++],n);else!function(e,t,n,o,r,a,i,c,l,u,d,s,p){var m,f,h,C=0,b=c,g=c,N=a-c+1,V=i-c+1,_=new Int32Array(V+1),k=N===o,x=!1,L=0,B=0;if(r<4||(N|V)<32)for(C=b;C<=a;++C)if(m=e[C],Bc?x=!0:L=c,16384&f.flags&&(t[c]=f=M(f)),Oe(m,f,l,n,u,d,p),++B;break}!k&&c>i&&Ve(m,l)}else k||Ve(m,l);else{var w={};for(C=g;C<=i;++C)w[t[C].key]=C;for(C=b;C<=a;++C)if(m=e[C],Bb;)Ve(e[b++],l);_[c-g]=C+1,L>c?x=!0:L=c,16384&(f=t[c]).flags&&(t[c]=f=M(f)),Oe(m,f,l,n,u,d,p),++B}else k||Ve(m,l);else k||Ve(m,l)}if(k)xe(l,s,e),Ee(t,l,n,u,d,p);else if(x){var S=function(e){var t=0,n=0,o=0,r=0,a=0,i=0,c=0,l=e.length;l>je&&(je=l,se=new Int32Array(l),pe=new Int32Array(l));for(;n>1]]0&&(pe[n]=se[a-1]),se[a]=n)}a=r+1;var u=new Int32Array(a);i=se[a-1];for(;a-- >0;)u[a]=i,i=pe[i],se[a]=0;return u}(_);for(c=S.length-1,C=V-1;C>=0;C--)0===_[C]?(16384&(f=t[L=C+g]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)=0;C--)0===_[C]&&(16384&(f=t[L=C+g]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)i?i:a,p=0;pi)for(p=s;p0&&g(r),k.v=!1,c(n)&&n(),c(x.renderComplete)&&x.renderComplete(i,t)}function Ge(e,t,n,o){void 0===n&&(n=null),void 0===o&&(o=p),ze(e,t,n,o)}"undefined"!=typeof document&&window.Node&&(Node.prototype.$EV=null,Node.prototype.$V=null);var He=[],Ue="undefined"!=typeof Promise?Promise.resolve().then.bind(Promise.resolve()):function(e){window.setTimeout(e,0)},Ke=!1;function We(e,t,n,o){var r=e.$PS;if(c(t)&&(t=t(r?d(e.state,r):e.state,e.props,e.context)),a(r))e.$PS=t;else for(var i in t)r[i]=t[i];if(e.$BR)c(n)&&e.$L.push(n.bind(e));else{if(!k.v&&0===He.length)return void $e(e,o,n);if(-1===He.indexOf(e)&&He.push(e),Ke||(Ke=!0,Ue(qe)),c(n)){var l=e.$QU;l||(l=e.$QU=[]),l.push(n)}}}function Ye(e){for(var t=e.$QU,n=0,o=t.length;n0&&g(r),k.v=!1}else e.state=e.$PS,e.$PS=null;c(n)&&n.call(e)}}var Qe=function(e,t){this.state=null,this.$BR=!1,this.$BS=!0,this.$PS=null,this.$LI=null,this.$UN=!1,this.$CX=null,this.$QU=null,this.$N=!1,this.$L=null,this.$SVG=!1,this.props=e||p,this.context=t||p};t.Component=Qe,Qe.prototype.forceUpdate=function(e){this.$UN||We(this,{},e,!0)},Qe.prototype.setState=function(e,t){this.$UN||this.$BS||We(this,e,t,!1)},Qe.prototype.render=function(e,t,n){return null};t.version="7.3.3"},function(e,t,n){"use strict";var o=function(e){var t,n=Object.prototype,o=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(e,t,n,o){var r=t&&t.prototype instanceof h?t:h,a=Object.create(r.prototype),i=new B(o||[]);return a._invoke=function(e,t,n){var o=d;return function(r,a){if(o===p)throw new Error("Generator is already running");if(o===m){if("throw"===r)throw a;return S()}for(n.method=r,n.arg=a;;){var i=n.delegate;if(i){var c=k(i,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=p;var l=u(e,t,n);if("normal"===l.type){if(o=n.done?m:s,l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=m,n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(o){return{type:"throw",arg:o}}}e.wrap=l;var d="suspendedStart",s="suspendedYield",p="executing",m="completed",f={};function h(){}function C(){}function b(){}var g={};g[a]=function(){return this};var N=Object.getPrototypeOf,v=N&&N(N(w([])));v&&v!==n&&o.call(v,a)&&(g=v);var V=b.prototype=h.prototype=Object.create(g);function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function _(e){var t;this._invoke=function(n,r){function a(){return new Promise((function(t,a){!function i(t,n,r,a){var c=u(e[t],e,n);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==typeof d&&o.call(d,"__await")?Promise.resolve(d.__await).then((function(e){i("next",e,r,a)}),(function(e){i("throw",e,r,a)})):Promise.resolve(d).then((function(e){l.value=e,r(l)}),(function(e){return i("throw",e,r,a)}))}a(c.arg)}(n,r,t,a)}))}return t=t?t.then(a,a):a()}}function k(e,n){var o=e.iterator[n.method];if(o===t){if(n.delegate=null,"throw"===n.method){if(e.iterator["return"]&&(n.method="return",n.arg=t,k(e,n),"throw"===n.method))return f;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=u(o,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,f;var a=r.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,f):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function B(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function w(e){if(e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function n(){for(;++r=0;--a){var i=this.tryEntries[a],c=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=o.call(i,"catchLoc"),u=o.call(i,"finallyLoc");if(l&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),f}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,o){return this.delegate={iterator:w(e),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=t),f}},e}(e.exports);try{regeneratorRuntime=o}catch(r){Function("r","regeneratorRuntime = r")(o)}},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){"use strict";(function(e){ +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=166)}([function(e,t,n){"use strict";t.__esModule=!0;var o=n(388);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=o[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=t.TitleBar=t.Tabs=t.Table=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.LabeledList=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var o=n(162);t.AnimatedNumber=o.AnimatedNumber;var r=n(395);t.BlockQuote=r.BlockQuote;var a=n(19);t.Box=a.Box;var i=n(119);t.Button=i.Button;var c=n(397);t.ByondUi=c.ByondUi;var l=n(399);t.Chart=l.Chart;var d=n(400);t.Collapsible=d.Collapsible;var u=n(401);t.ColorBox=u.ColorBox;var s=n(402);t.Dimmer=s.Dimmer;var p=n(403);t.Dropdown=p.Dropdown;var m=n(404);t.Flex=m.Flex;var f=n(405);t.Grid=f.Grid;var h=n(89);t.Icon=h.Icon;var C=n(406);t.Input=C.Input;var b=n(120);t.LabeledList=b.LabeledList;var g=n(407);t.NoticeBox=g.NoticeBox;var N=n(408);t.NumberInput=N.NumberInput;var v=n(409);t.ProgressBar=v.ProgressBar;var V=n(410);t.Section=V.Section;var y=n(164);t.Table=y.Table;var _=n(411);t.Tabs=_.Tabs;var k=n(412);t.TitleBar=k.TitleBar;var x=n(163);t.Tooltip=x.Tooltip},function(e,t,n){"use strict";var o=n(5),r=n(22).f,a=n(30),i=n(24),c=n(91),l=n(126),d=n(63);e.exports=function(e,t){var n,u,s,p,m,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(u in t){if(p=t[u],s=e.noTargetGet?(m=r(n,u))&&m.value:n[u],!d(h?u:f+(C?".":"#")+u,e.forced)&&s!==undefined){if(typeof p==typeof s)continue;l(p,s)}(e.sham||s&&s.sham)&&a(p,"sham",!0),i(n,u,p,e)}}},function(e,t,n){"use strict";t.__esModule=!0,t.useBackend=t.backendReducer=t.backendUpdate=void 0;var o=n(38),r=n(15);t.backendUpdate=function(e){return{type:"backendUpdate",payload:e}};t.backendReducer=function(e,t){var n=t.type,r=t.payload;if("backendUpdate"===n){var a=Object.assign({},e.config,{},r.config),i=Object.assign({},e.data,{},r.static_data,{},r.data),c=a.status!==o.UI_DISABLED,l=a.status===o.UI_INTERACTIVE;return Object.assign({},e,{config:a,data:i,visible:c,interactive:l})}return e};t.useBackend=function(e){var t=e.state,n=(e.dispatch,t.config.ref);return Object.assign({},t,{act:function(e,t){return void 0===t&&(t={}),(0,r.act)(n,e,t)}})}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(122))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(5),r=n(93),a=n(16),i=n(60),c=n(97),l=n(129),d=r("wks"),u=o.Symbol,s=l?u:u&&u.withoutSetter||i;e.exports=function(e){return a(d,e)||(c&&a(u,e)?d[e]=u[e]:d[e]=s("Symbol."+e)),d[e]}},function(e,t,n){"use strict";var o=n(7),r=n(123),a=n(8),i=n(34),c=Object.defineProperty;t.f=o?c:function(e,t,n){if(a(e),t=i(t,!0),a(n),r)try{return c(e,t,n)}catch(o){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";var o=n(23);e.exports=function(e){return Object(o(e))}},function(e,t,n){"use strict";t.__esModule=!0,t.winset=t.winget=t.act=t.runCommand=t.callByondAsync=t.callByond=t.tridentVersion=void 0;var o=n(21);function r(e,t,n,o,r,a,i){try{var c=e[a](i),l=c.value}catch(d){return void n(d)}c.done?t(l):Promise.resolve(l).then(o,r)}var a,i=(a=navigator.userAgent.match(/Trident\/(\d+).+?;/i)[1])?parseInt(a,10):null;t.tridentVersion=i;var c=function(e,t){return void 0===t&&(t={}),"byond://"+e+"?"+(0,o.buildQueryString)(t)},l=function(e,t){void 0===t&&(t={}),location.href=c(e,t)};t.callByond=l;var d=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,o=new Promise((function(e){window.__callbacks__.push(e)}));return window.location.href=c(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),o};t.callByondAsync=d;t.runCommand=function(e){return l("winset",{command:e})};t.act=function(e,t,n){return void 0===n&&(n={}),l("",Object.assign({src:e,action:t},n))};var u=function(){var e,t=(e=regeneratorRuntime.mark((function n(e,t){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,d("winget",{id:e,property:t});case 2:return o=n.sent,n.abrupt("return",o[t]);case 4:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,a){var i=e.apply(t,n);function c(e){r(i,o,a,c,l,"next",e)}function l(e){r(i,o,a,c,l,"throw",e)}c(undefined)}))});return function(e,n){return t.apply(this,arguments)}}();t.winget=u;t.winset=function(e,t,n){var o;return l("winset",((o={})[e+"."+t]=n,o))}},function(e,t,n){"use strict";var o={}.hasOwnProperty;e.exports=function(e,t){return o.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.reduce=t.sortBy=t.map=t.filter=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var o in e)t.call(e,o)&&n.push(e[o]);return n}return[]};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],o=0;oc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(r[n]=e[n]);return r}var l=function(e){return"string"==typeof e?e:"number"==typeof e?6*e+"px":void 0};t.unit=l;var d=function(e){return"string"==typeof e&&i.CSS_COLORS.includes(e)},u=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=n)}},s=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=l(n))}},p=function(e,t){return function(n,o){(0,r.isFalsy)(o)||(n[e]=t)}},m=function(e,t){return function(n,o){if(!(0,r.isFalsy)(o))for(var a=0;a0&&(t.style=l),t};t.computeBoxProps=C;var b=function(e){var t=e.as,n=void 0===t?"div":t,i=e.className,l=e.content,u=e.children,s=c(e,["as","className","content","children"]),p=e.textColor||e.color,m=e.backgroundColor;if("function"==typeof u)return u(C(e));var f=C(s);return(0,o.createVNode)(a.VNodeFlags.HtmlElement,n,(0,r.classes)([i,d(p)&&"color-"+p,d(m)&&"color-bg-"+m]),l||u,a.ChildFlags.UnknownChildren,f)};t.Box=b,b.defaultHooks=r.pureComponentHooks;var g=function(e){var t=e.children,n=c(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,b,Object.assign({position:"relative"},n,{children:(0,o.createComponentVNode)(2,b,{fillPositionedParent:!0,children:t})})))};g.defaultHooks=r.pureComponentHooks,b.Forced=g},function(e,t,n){"use strict";var o=n(50),r=n(59),a=n(14),i=n(11),c=n(65),l=[].push,d=function(e){var t=1==e,n=2==e,d=3==e,u=4==e,s=6==e,p=5==e||s;return function(m,f,h,C){for(var b,g,N=a(m),v=r(N),V=o(f,h,3),y=i(v.length),_=0,k=C||c,x=t?k(m,y):n?k(m,0):undefined;y>_;_++)if((p||_ in v)&&(g=V(b=v[_],_,N),e))if(t)x[_]=g;else if(g)switch(e){case 3:return!0;case 5:return b;case 6:return _;case 2:l.call(x,b)}else if(u)return!1;return s?-1:d||u?u:x}};e.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.buildQueryString=t.decodeHtmlEntities=t.toTitleCase=t.capitalize=t.testGlobPattern=t.multiline=void 0;t.multiline=function o(e){if(Array.isArray(e))return o(e.join(""));var t,n=e.split("\n"),r=n,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var c;if(a){if(i>=r.length)break;c=r[i++]}else{if((i=r.next()).done)break;c=i.value}for(var l=c,d=0;d",apos:"'"};return e.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/&#?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/&#x?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var o=n(7),r=n(72),a=n(48),i=n(26),c=n(34),l=n(16),d=n(123),u=Object.getOwnPropertyDescriptor;t.f=o?u:function(e,t){if(e=i(e),t=c(t,!0),d)try{return u(e,t)}catch(n){}if(l(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var o=n(5),r=n(30),a=n(16),i=n(91),c=n(92),l=n(35),d=l.get,u=l.enforce,s=String(String).split("String");(e.exports=function(e,t,n,c){var l=!!c&&!!c.unsafe,d=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof t||a(n,"name")||r(n,"name",t),u(n).source=s.join("string"==typeof t?t:"")),e!==o?(l?!p&&e[t]&&(d=!0):delete e[t],d?e[t]=n:r(e,t,n)):d?e[t]=n:i(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&d(this).source||c(this)}))},function(e,t,n){"use strict";var o=n(7),r=n(4),a=n(16),i=Object.defineProperty,c={},l=function(e){throw e};e.exports=function(e,t){if(a(c,e))return c[e];t||(t={});var n=[][e],d=!!a(t,"ACCESSORS")&&t.ACCESSORS,u=a(t,0)?t[0]:l,s=a(t,1)?t[1]:undefined;return c[e]=!!n&&!r((function(){if(d&&!o)return!0;var e={length:-1};d?i(e,1,{enumerable:!0,get:l}):e[1]=1,n.call(e,u,s)}))}},function(e,t,n){"use strict";var o=n(59),r=n(23);e.exports=function(e){return o(r(e))}},function(e,t,n){"use strict";var o=n(127),r=n(16),a=n(133),i=n(13).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||i(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";var o=n(23),r=/"/g;e.exports=function(e,t,n,a){var i=String(o(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+String(a).replace(r,""")+'"'),c+">"+i+""}},function(e,t,n){"use strict";var o=n(4);e.exports=function(e){return o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";var o=n(7),r=n(13),a=n(48);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var o=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:o)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var o={}.toString;e.exports=function(e){return o.call(e).slice(8,-1)}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var o,r,a,i=n(125),c=n(5),l=n(6),d=n(30),u=n(16),s=n(73),p=n(61),m=c.WeakMap;if(i){var f=new m,h=f.get,C=f.has,b=f.set;o=function(e,t){return b.call(f,e,t),t},r=function(e){return h.call(f,e)||{}},a=function(e){return C.call(f,e)}}else{var g=s("state");p[g]=!0,o=function(e,t){return d(e,g,t),t},r=function(e){return u(e,g)?e[g]:{}},a=function(e){return u(e,g)}}e.exports={set:o,get:r,has:a,enforce:function(e){return a(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var o=n(16),r=n(14),a=n(73),i=n(104),c=a("IE_PROTO"),l=Object.prototype;e.exports=i?Object.getPrototypeOf:function(e){return e=r(e),o(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,n){"use strict";var o=n(127),r=n(5),a=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?a(o[e])||a(r[e]):o[e]&&o[e][t]||r[e]&&r[e][t]}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var o=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),r=o.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return r&&r.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=o.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";t.__esModule=!0,t.createLogger=void 0;n(159);var o=n(15),r=0,a=1,i=2,c=3,l=4,d=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a=i){var c=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,o.act)(window.__ref__,"tgui:log",{log:c})}};t.createLogger=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;on;)r[n]=t[n++];return r},U=function(e,t){T(e,t,{get:function(){return S(this)[t]}})},K=function(e){var t;return e instanceof R||"ArrayBuffer"==(t=b(e))||"SharedArrayBuffer"==t},W=function(e,t){return G(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},Y=function(e,t){return W(e,t=h(t,!0))?u(2,e[t]):A(e,t)},q=function(e,t,n){return!(W(e,t=h(t,!0))&&g(n)&&C(n,"value"))||C(n,"get")||C(n,"set")||n.configurable||C(n,"writable")&&!n.writable||C(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};a?(O||(L.f=Y,x.f=q,U(j,"buffer"),U(j,"byteOffset"),U(j,"byteLength"),U(j,"length")),o({target:"Object",stat:!0,forced:!O},{getOwnPropertyDescriptor:Y,defineProperty:q}),e.exports=function(e,t,n){var a=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,h=r[c],C=h,b=C&&C.prototype,x={},L=function(e,t){T(e,t,{get:function(){return function(e,t){var n=S(e);return n.view[l](t*a+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,o){var r=S(e);n&&(o=(o=P(o))<0?0:o>255?255:255&o),r.view[u](t*a+r.byteOffset,o,!0)}(this,t,e)},enumerable:!0})};O?i&&(C=t((function(e,t,n,o){return d(e,C,c),w(g(t)?K(t)?o!==undefined?new h(t,f(n,a),o):n!==undefined?new h(t,f(n,a)):new h(t):G(t)?H(C,t):y.call(C,t):new h(m(t)),e,C)})),v&&v(C,D),_(V(h),(function(e){e in C||s(C,e,h[e])})),C.prototype=b):(C=t((function(e,t,n,o){d(e,C,c);var r,i,l,u=0,s=0;if(g(t)){if(!K(t))return G(t)?H(C,t):y.call(C,t);r=t,s=f(n,a);var h=t.byteLength;if(o===undefined){if(h%a)throw E("Wrong length");if((i=h-s)<0)throw E("Wrong length")}else if((i=p(o)*a)+s>h)throw E("Wrong length");l=i/a}else l=m(t),r=new R(i=l*a);for(I(e,{buffer:r,byteOffset:s,byteLength:i,length:l,view:new M(r)});u"+e+"<\/script>"},f=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch(r){}var e,t;f=o?function(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t}(o):((t=d("iframe")).style.display="none",l.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(m("document.F=Object")),e.close(),e.F);for(var n=i.length;n--;)delete f.prototype[i[n]];return f()};c[s]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(p.prototype=r(e),n=new p,p.prototype=null,n[s]=e):n=f(),t===undefined?n:a(n,t)}},function(e,t,n){"use strict";var o=n(13).f,r=n(16),a=n(12)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,a)&&o(e,a,{configurable:!0,value:t})}},function(e,t,n){"use strict";var o=n(12),r=n(44),a=n(13),i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a.f(c,i,{configurable:!0,value:r(null)}),e.exports=function(e){c[i][e]=!0}},function(e,t,n){"use strict";var o=n(8),r=n(32),a=n(12)("species");e.exports=function(e,t){var n,i=o(e).constructor;return i===undefined||(n=o(i)[a])==undefined?t:r(n)}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var o=n(128),r=n(95).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(32);e.exports=function(e,t,n){if(o(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var o=n(34),r=n(13),a=n(48);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},function(e,t,n){"use strict";var o=n(8),r=n(139);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(a){}return function(n,a){return o(n),r(a),t?e.call(n,a):n.__proto__=a,n}}():undefined)},function(e,t,n){"use strict";var o=n(61),r=n(6),a=n(16),i=n(13).f,c=n(60),l=n(69),d=c("meta"),u=0,s=Object.isExtensible||function(){return!0},p=function(e){i(e,d,{value:{objectID:"O"+ ++u,weakData:{}}})},m=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,d)){if(!s(e))return"F";if(!t)return"E";p(e)}return e[d].objectID},getWeakData:function(e,t){if(!a(e,d)){if(!s(e))return!0;if(!t)return!1;p(e)}return e[d].weakData},onFreeze:function(e){return l&&m.REQUIRED&&s(e)&&!a(e,d)&&p(e),e}};o[d]=!0},function(e,t,n){"use strict";var o=n(33);e.exports=Array.isArray||function(e){return"Array"==o(e)}},function(e,t,n){"use strict";var o=n(37),r=n(13),a=n(12),i=n(7),c=a("species");e.exports=function(e){var t=o(e),n=r.f;i&&t&&!t[c]&&n(t,c,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var o=n(23),r="["+n(82)+"]",a=RegExp("^"+r+r+"*"),i=RegExp(r+r+"*$"),c=function(e){return function(t){var n=String(o(t));return 1&e&&(n=n.replace(a,"")),2&e&&(n=n.replace(i,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},function(e,t,n){"use strict";t.__esModule=!0,t.compose=t.flow=void 0;t.flow=function o(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),i=1;i=c.length)break;u=c[d++]}else{if((d=c.next()).done)break;u=d.value}var s=u;Array.isArray(s)?n=o.apply(void 0,s).apply(void 0,[n].concat(a)):s&&(n=s.apply(void 0,[n].concat(a)))}return n}};t.compose=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;au;)if((c=l[u++])!=c)return!0}else for(;d>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var o=n(4),r=/#|\.prototype\./,a=function(e,t){var n=c[i(e)];return n==d||n!=l&&("function"==typeof t?o(t):!!t)},i=a.normalize=function(e){return String(e).replace(r,".").toLowerCase()},c=a.data={},l=a.NATIVE="N",d=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var o=n(128),r=n(95);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(6),r=n(54),a=n(12)("species");e.exports=function(e,t){var n;return r(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!r(n.prototype)?o(n)&&null===(n=n[a])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var o=n(4),r=n(12),a=n(98),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var o=n(24);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var o=n(8),r=n(100),a=n(11),i=n(50),c=n(101),l=n(136),d=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,u,s){var p,m,f,h,C,b,g,N=i(t,n,u?2:1);if(s)p=e;else{if("function"!=typeof(m=c(e)))throw TypeError("Target is not iterable");if(r(m)){for(f=0,h=a(e.length);h>f;f++)if((C=u?N(o(g=e[f])[0],g[1]):N(e[f]))&&C instanceof d)return C;return new d(!1)}p=m.call(e)}for(b=p.next;!(g=b.call(p)).done;)if("object"==typeof(C=l(p,N,g.value,u))&&C&&C instanceof d)return C;return new d(!1)}).stop=function(e){return new d(!0,e)}},function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(0),r=n(1);t.InterfaceLockNoticeBox=function(e){var t=e.siliconUser,n=e.locked,a=e.onLockStatusChange,i=e.accessText;return t?(0,o.createComponentVNode)(2,r.NoticeBox,{children:(0,o.createComponentVNode)(2,r.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,r.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Button,{m:0,color:"gray",icon:n?"lock":"unlock",content:n?"Locked":"Unlocked",onClick:function(){a&&a(!n)}})})]})}):(0,o.createComponentVNode)(2,r.NoticeBox,{children:["Swipe ",i||"an ID card"," ","to ",n?"unlock":"lock"," this interface."]})}},function(e,t,n){"use strict";var o={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,a=r&&!o.call({1:2},1);t.f=a?function(e){var t=r(this,e);return!!t&&t.enumerable}:o},function(e,t,n){"use strict";var o=n(93),r=n(60),a=o("keys");e.exports=function(e){return a[e]||(a[e]=r(e))}},function(e,t,n){"use strict";var o=n(37);e.exports=o("navigator","userAgent")||""},function(e,t,n){"use strict";var o=n(102),r=n(33),a=n(12)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=o?r:function(e){var t,n,o;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),a))?n:i?r(t):"Object"==(o=r(t))&&"function"==typeof t.callee?"Arguments":o}},function(e,t,n){"use strict";var o=n(12)("iterator"),r=!1;try{var a=0,i={next:function(){return{done:!!a++}},"return":function(){r=!0}};i[o]=function(){return this},Array.from(i,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var a={};a[o]=function(){return{next:function(){return{done:n=!0}}}},e(a)}catch(c){}return n}},function(e,t,n){"use strict";var o=n(32),r=n(14),a=n(59),i=n(11),c=function(e){return function(t,n,c,l){o(n);var d=r(t),u=a(d),s=i(d.length),p=e?s-1:0,m=e?-1:1;if(c<2)for(;;){if(p in u){l=u[p],p+=m;break}if(p+=m,e?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;e?p>=0:s>p;p+=m)p in u&&(l=n(l,u[p],p,d));return l}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(105),i=n(30),c=n(68),l=n(4),d=n(56),u=n(31),s=n(11),p=n(141),m=n(220),f=n(36),h=n(52),C=n(49).f,b=n(13).f,g=n(99),N=n(45),v=n(35),V=v.get,y=v.set,_=o.ArrayBuffer,k=_,x=o.DataView,L=x&&x.prototype,B=Object.prototype,w=o.RangeError,S=m.pack,I=m.unpack,T=function(e){return[255&e]},A=function(e){return[255&e,e>>8&255]},P=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},E=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return S(e,23,4)},M=function(e){return S(e,52,8)},O=function(e,t){b(e.prototype,t,{get:function(){return V(this)[t]}})},F=function(e,t,n,o){var r=p(n),a=V(e);if(r+t>a.byteLength)throw w("Wrong index");var i=V(a.buffer).bytes,c=r+a.byteOffset,l=i.slice(c,c+t);return o?l:l.reverse()},D=function(e,t,n,o,r,a){var i=p(n),c=V(e);if(i+t>c.byteLength)throw w("Wrong index");for(var l=V(c.buffer).bytes,d=i+c.byteOffset,u=o(+r),s=0;sH;)(j=G[H++])in k||i(k,j,_[j]);z.constructor=k}h&&f(L)!==B&&h(L,B);var U=new x(new k(2)),K=L.setInt8;U.setInt8(0,2147483648),U.setInt8(1,2147483649),!U.getInt8(0)&&U.getInt8(1)||c(L,{setInt8:function(e,t){K.call(this,e,t<<24>>24)},setUint8:function(e,t){K.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){d(this,k,"ArrayBuffer");var t=p(e);y(this,{bytes:g.call(new Array(t),0),byteLength:t}),r||(this.byteLength=t)},x=function(e,t,n){d(this,x,"DataView"),d(e,k,"DataView");var o=V(e).byteLength,a=u(t);if(a<0||a>o)throw w("Wrong offset");if(a+(n=n===undefined?o-a:s(n))>o)throw w("Wrong length");y(this,{buffer:e,byteLength:n,byteOffset:a}),r||(this.buffer=e,this.byteLength=n,this.byteOffset=a)},r&&(O(k,"byteLength"),O(x,"buffer"),O(x,"byteLength"),O(x,"byteOffset")),c(x.prototype,{getInt8:function(e){return F(this,1,e)[0]<<24>>24},getUint8:function(e){return F(this,1,e)[0]},getInt16:function(e){var t=F(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=F(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return E(F(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return E(F(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return I(F(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return I(F(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){D(this,1,e,T,t)},setUint8:function(e,t){D(this,1,e,T,t)},setInt16:function(e,t){D(this,2,e,A,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){D(this,2,e,A,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){D(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){D(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){D(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){D(this,8,e,M,t,arguments.length>2?arguments[2]:undefined)}});N(k,"ArrayBuffer"),N(x,"DataView"),e.exports={ArrayBuffer:k,DataView:x}},function(e,t,n){"use strict";var o=n(2),r=n(5),a=n(63),i=n(24),c=n(53),l=n(70),d=n(56),u=n(6),s=n(4),p=n(76),m=n(45),f=n(80);e.exports=function(e,t,n){var h=-1!==e.indexOf("Map"),C=-1!==e.indexOf("Weak"),b=h?"set":"add",g=r[e],N=g&&g.prototype,v=g,V={},y=function(e){var t=N[e];i(N,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(C&&!u(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return C&&!u(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(C&&!u(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(a(e,"function"!=typeof g||!(C||N.forEach&&!s((function(){(new g).entries().next()})))))v=n.getConstructor(t,e,h,b),c.REQUIRED=!0;else if(a(e,!0)){var _=new v,k=_[b](C?{}:-0,1)!=_,x=s((function(){_.has(1)})),L=p((function(e){new g(e)})),B=!C&&s((function(){for(var e=new g,t=5;t--;)e[b](t,t);return!e.has(-0)}));L||((v=t((function(t,n){d(t,v,e);var o=f(new g,t,v);return n!=undefined&&l(n,o[b],o,h),o}))).prototype=N,N.constructor=v),(x||B)&&(y("delete"),y("has"),h&&y("get")),(B||k)&&y(b),C&&N.clear&&delete N.clear}return V[e]=v,o({global:!0,forced:v!=g},V),m(v,e),C||n.setStrong(v,e,h),v}},function(e,t,n){"use strict";var o=n(6),r=n(52);e.exports=function(e,t,n){var a,i;return r&&"function"==typeof(a=t.constructor)&&a!==n&&o(i=a.prototype)&&i!==n.prototype&&r(e,i),e}},function(e,t,n){"use strict";var o=Math.expm1,r=Math.exp;e.exports=!o||o(10)>22025.465794806718||o(10)<22025.465794806718||-2e-17!=o(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:r(e)-1}:o},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var o=n(40),r=n(5),a=n(4);e.exports=o||!a((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}))},function(e,t,n){"use strict";var o=n(8);e.exports=function(){var e=o(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var o,r,a=n(84),i=n(111),c=RegExp.prototype.exec,l=String.prototype.replace,d=c,u=(o=/a/,r=/b*/g,c.call(o,"a"),c.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),s=i.UNSUPPORTED_Y||i.BROKEN_CARET,p=/()??/.exec("")[1]!==undefined;(u||p||s)&&(d=function(e){var t,n,o,r,i=this,d=s&&i.sticky,m=a.call(i),f=i.source,h=0,C=e;return d&&(-1===(m=m.replace("y","")).indexOf("g")&&(m+="g"),C=String(e).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(f="(?: "+f+")",C=" "+C,h++),n=new RegExp("^(?:"+f+")",m)),p&&(n=new RegExp("^"+f+"$(?!\\s)",m)),u&&(t=i.lastIndex),o=c.call(d?n:i,C),d?o?(o.input=o.input.slice(h),o[0]=o[0].slice(h),o.index=i.lastIndex,i.lastIndex+=o[0].length):i.lastIndex=0:u&&o&&(i.lastIndex=i.global?o.index+o[0].length:t),p&&o&&o.length>1&&l.call(o[0],n,(function(){for(r=1;r")})),u="$0"==="a".replace(/./,"$0"),s=a("replace"),p=!!/./[s]&&""===/./[s]("a","$0"),m=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,s){var f=a(e),h=!r((function(){var t={};return t[f]=function(){return 7},7!=""[e](t)})),C=h&&!r((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[f]=/./[f]),n.exec=function(){return t=!0,null},n[f](""),!t}));if(!h||!C||"replace"===e&&(!d||!u||p)||"split"===e&&!m){var b=/./[f],g=n(f,""[e],(function(e,t,n,o,r){return t.exec===i?h&&!r?{done:!0,value:b.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),N=g[0],v=g[1];o(String.prototype,e,N),o(RegExp.prototype,f,2==t?function(e,t){return v.call(e,this,t)}:function(e){return v.call(e,this)})}s&&c(RegExp.prototype[f],"sham",!0)}},function(e,t,n){"use strict";var o=n(33),r=n(85);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var a=n.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.refocusLayout=void 0;var o=n(15);t.refocusLayout=function(){if(!(o.tridentVersion<=4)){var e=document.getElementById("Layout__content");e&&e.focus()}}},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var o=n(0),r=n(9),a=n(19);var i=/-o$/,c=function(e){var t=e.name,n=e.size,c=e.spin,l=e.className,d=e.style,u=void 0===d?{}:d,s=e.rotation,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["name","size","spin","className","style","rotation"]);n&&(u["font-size"]=100*n+"%"),"number"==typeof s&&(u.transform="rotate("+s+"deg)");var m=i.test(t),f=t.replace(i,"");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"i",className:(0,r.classes)([l,m?"far":"fas","fa-"+f,c&&"fa-spin"]),style:u},p)))};t.Icon=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var o=n(5),r=n(6),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,n){"use strict";var o=n(5),r=n(30);e.exports=function(e,t){try{r(o,e,t)}catch(n){o[e]=t}return t}},function(e,t,n){"use strict";var o=n(124),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},function(e,t,n){"use strict";var o=n(40),r=n(124);(e.exports=function(e,t){return r[e]||(r[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.4",mode:o?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var o=n(37),r=n(49),a=n(96),i=n(8);e.exports=o("Reflect","ownKeys")||function(e){var t=r.f(i(e)),n=a.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var o=n(4);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var o,r,a=n(5),i=n(74),c=a.process,l=c&&c.versions,d=l&&l.v8;d?r=(o=d.split("."))[0]+o[1]:i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},function(e,t,n){"use strict";var o=n(14),r=n(43),a=n(11);e.exports=function(e){for(var t=o(this),n=a(t.length),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,d=l===undefined?n:r(l,n);d>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var o=n(12),r=n(67),a=o("iterator"),i=Array.prototype;e.exports=function(e){return e!==undefined&&(r.Array===e||i[a]===e)}},function(e,t,n){"use strict";var o=n(75),r=n(67),a=n(12)("iterator");e.exports=function(e){if(e!=undefined)return e[a]||e["@@iterator"]||r[o(e)]}},function(e,t,n){"use strict";var o={};o[n(12)("toStringTag")]="z",e.exports="[object z]"===String(o)},function(e,t,n){"use strict";var o=n(2),r=n(205),a=n(36),i=n(52),c=n(45),l=n(30),d=n(24),u=n(12),s=n(40),p=n(67),m=n(138),f=m.IteratorPrototype,h=m.BUGGY_SAFARI_ITERATORS,C=u("iterator"),b=function(){return this};e.exports=function(e,t,n,u,m,g,N){r(n,t,u);var v,V,y,_=function(e){if(e===m&&w)return w;if(!h&&e in L)return L[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},k=t+" Iterator",x=!1,L=e.prototype,B=L[C]||L["@@iterator"]||m&&L[m],w=!h&&B||_(m),S="Array"==t&&L.entries||B;if(S&&(v=a(S.call(new e)),f!==Object.prototype&&v.next&&(s||a(v)===f||(i?i(v,f):"function"!=typeof v[C]&&l(v,C,b)),c(v,k,!0,!0),s&&(p[k]=b))),"values"==m&&B&&"values"!==B.name&&(x=!0,w=function(){return B.call(this)}),s&&!N||L[C]===w||l(L,C,w),p[t]=w,m)if(V={values:_("values"),keys:g?w:_("keys"),entries:_("entries")},N)for(y in V)(h||x||!(y in L))&&d(L,y,V[y]);else o({target:t,proto:!0,forced:h||x},V);return V}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var o=n(11),r=n(107),a=n(23),i=Math.ceil,c=function(e){return function(t,n,c){var l,d,u=String(a(t)),s=u.length,p=c===undefined?" ":String(c),m=o(n);return m<=s||""==p?u:(l=m-s,(d=r.call(p,i(l/p.length))).length>l&&(d=d.slice(0,l)),e?u+d:d+u)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var o=n(31),r=n(23);e.exports="".repeat||function(e){var t=String(r(this)),n="",a=o(e);if(a<0||a==Infinity)throw RangeError("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))1&a&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var o,r,a,i=n(5),c=n(4),l=n(33),d=n(50),u=n(131),s=n(90),p=n(150),m=i.location,f=i.setImmediate,h=i.clearImmediate,C=i.process,b=i.MessageChannel,g=i.Dispatch,N=0,v={},V=function(e){if(v.hasOwnProperty(e)){var t=v[e];delete v[e],t()}},y=function(e){return function(){V(e)}},_=function(e){V(e.data)},k=function(e){i.postMessage(e+"",m.protocol+"//"+m.host)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return v[++N]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},o(N),N},h=function(e){delete v[e]},"process"==l(C)?o=function(e){C.nextTick(y(e))}:g&&g.now?o=function(e){g.now(y(e))}:b&&!p?(a=(r=new b).port2,r.port1.onmessage=_,o=d(a.postMessage,a,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||c(k)?o="onreadystatechange"in s("script")?function(e){u.appendChild(s("script")).onreadystatechange=function(){u.removeChild(this),V(e)}}:function(e){setTimeout(y(e),0)}:(o=k,i.addEventListener("message",_,!1))),e.exports={set:f,clear:h}},function(e,t,n){"use strict";var o=n(6),r=n(33),a=n(12)("match");e.exports=function(e){var t;return o(e)&&((t=e[a])!==undefined?!!t:"RegExp"==r(e))}},function(e,t,n){"use strict";var o=n(4);function r(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=o((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=o((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var o=n(31),r=n(23),a=function(e){return function(t,n){var a,i,c=String(r(t)),l=o(n),d=c.length;return l<0||l>=d?e?"":undefined:(a=c.charCodeAt(l))<55296||a>56319||l+1===d||(i=c.charCodeAt(l+1))<56320||i>57343?e?c.charAt(l):a:e?c.slice(l,l+2):i-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t,n){"use strict";var o=n(110);e.exports=function(e){if(o(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var o=n(12)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},function(e,t,n){"use strict";var o=n(112).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},function(e,t,n){"use strict";var o=n(4),r=n(82);e.exports=function(e){return o((function(){return!!r[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||r[e].name!==e}))}},function(e,t,n){"use strict";var o=n(5),r=n(4),a=n(76),i=n(10).NATIVE_ARRAY_BUFFER_VIEWS,c=o.ArrayBuffer,l=o.Int8Array;e.exports=!i||!r((function(){l(1)}))||!r((function(){new l(-1)}))||!a((function(e){new l,new l(null),new l(1.5),new l(e)}),!0)||r((function(){return 1!==new l(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.hotKeyReducer=t.hotKeyMiddleware=t.releaseHeldKeys=t.KEY_MINUS=t.KEY_EQUAL=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;var o=n(39),r=n(15),a=(0,o.createLogger)("hotkeys");t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_EQUAL=187;t.KEY_MINUS=189;var i=[17,18,16],c=[27,13,32,9,17,16],l={},d=function(e,t,n,o){var r="";return e&&(r+="Ctrl+"),t&&(r+="Alt+"),n&&(r+="Shift+"),r+=o>=48&&o<=90?String.fromCharCode(o):"["+o+"]"},u=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,o=e.altKey,r=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:o,shiftKey:r,hasModifierKeys:n||o||r,keyString:d(n,o,r,t)}},s=function(){for(var e=0,t=Object.keys(l);e4&&function(e,t){if(!e.defaultPrevented){var n=e.target&&e.target.localName;if("input"!==n&&"textarea"!==n){var o=u(e),i=o.keyCode,d=o.ctrlKey,s=o.shiftKey;d||s||c.includes(i)||("keydown"!==t||l[i]?"keyup"===t&&l[i]&&(a.debug("passthrough",t,o),(0,r.callByond)("",{__keyup:i})):(a.debug("passthrough",t,o),(0,r.callByond)("",{__keydown:i})))}}}(e,t),function(e,t,n){if("keyup"===t){var o=u(e),r=o.ctrlKey,c=o.altKey,l=o.keyCode,d=o.hasModifierKeys,s=o.keyString;d&&!i.includes(l)&&(a.log(s),r&&c&&8===l&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")})),n({type:"hotKey",payload:o}))}}(e,t,n)},document.addEventListener("keydown",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keydown"),l[n]=!0})),document.addEventListener("keyup",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keyup"),l[n]=!1})),r.tridentVersion>4&&function(e){var t;document.addEventListener("focusout",(function(){t=setTimeout(e)})),document.addEventListener("focusin",(function(){clearTimeout(t)})),window.addEventListener("beforeunload",e)}((function(){s()})),function(e){return function(t){return e(t)}}};t.hotKeyReducer=function(e,t){var n=t.type,o=t.payload;if("hotKey"===n){var r=o.ctrlKey,a=o.altKey,i=o.keyCode;return r&&a&&187===i?Object.assign({},e,{showKitchenSink:!e.showKitchenSink}):e}return e}},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var o=n(0),r=n(9),a=n(15),i=n(118),c=n(39),l=n(88),d=n(19),u=n(89),s=n(163);function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function m(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var f=(0,c.createLogger)("Button"),h=function(e){var t=e.className,n=e.fluid,c=e.icon,p=e.color,h=e.disabled,C=e.selected,b=e.tooltip,g=e.tooltipPosition,N=e.ellipsis,v=e.content,V=e.iconRotation,y=e.iconSpin,_=e.children,k=e.onclick,x=e.onClick,L=m(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),B=!(!v&&!_);return k&&f.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({as:"span",className:(0,r.classes)(["Button",n&&"Button--fluid",h&&"Button--disabled",C&&"Button--selected",B&&"Button--hasContent",N&&"Button--ellipsis",p&&"string"==typeof p?"Button--color--"+p:"Button--color--default",t]),tabIndex:!h&&"0",unselectable:a.tridentVersion<=4,onclick:function(e){(0,l.refocusLayout)(),!h&&x&&x(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===i.KEY_SPACE||t===i.KEY_ENTER?(e.preventDefault(),void(!h&&x&&x(e))):t===i.KEY_ESCAPE?(e.preventDefault(),void(0,l.refocusLayout)()):void 0}},L,{children:[c&&(0,o.createComponentVNode)(2,u.Icon,{name:c,rotation:V,spin:y}),v,_,b&&(0,o.createComponentVNode)(2,s.Tooltip,{content:b,position:g})]})))};t.Button=h,h.defaultHooks=r.pureComponentHooks;var C=function(e){var t=e.checked,n=m(e,["checked"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=C,h.Checkbox=C;var b=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}p(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,r=void 0===n?"Confirm?":n,a=t.confirmColor,i=void 0===a?"bad":a,c=t.confirmIcon,l=t.icon,d=t.color,u=t.content,s=t.onClick,p=m(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({content:this.state.clickedOnce?r:u,icon:this.state.clickedOnce?c:l,color:this.state.clickedOnce?i:d,onClick:function(){return e.state.clickedOnce?s():e.setClickedOnce(!0)}},p)))},t}(o.Component);t.ButtonConfirm=b,h.Confirm=b;var g=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={inInput:!1},t}p(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,c=t.icon,l=t.iconRotation,p=t.iconSpin,f=t.tooltip,h=t.tooltipPosition,C=t.color,b=void 0===C?"default":C,g=(t.placeholder,t.maxLength,m(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({className:(0,r.classes)(["Button",n&&"Button--fluid","Button--color--"+b])},g,{onClick:function(){return e.setInInput(!0)},children:[c&&(0,o.createComponentVNode)(2,u.Icon,{name:c,rotation:l,spin:p}),(0,o.createVNode)(1,"div",null,a,0),(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),f&&(0,o.createComponentVNode)(2,s.Tooltip,{content:f,position:h})]})))},t}(o.Component);t.ButtonInput=g,h.Input=g},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var o=n(0),r=n(9),a=n(19),i=function(e){var t=e.children;return(0,o.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=i,i.defaultHooks=r.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,i=e.labelColor,c=void 0===i?"label":i,l=e.color,d=e.buttons,u=e.content,s=e.children;return(0,o.createVNode)(1,"tr",(0,r.classes)(["LabeledList__row",t]),[(0,o.createComponentVNode)(2,a.Box,{as:"td",color:c,className:(0,r.classes)(["LabeledList__cell","LabeledList__label"]),content:n+":"}),(0,o.createComponentVNode)(2,a.Box,{as:"td",color:l,className:(0,r.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:d?undefined:2,children:[u,s]}),d&&(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",d,0)],0)};t.LabeledListItem=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t;return(0,o.createVNode)(1,"tr","LabeledList__row",(0,o.createVNode)(1,"td",null,null,1,{style:{"padding-bottom":(0,a.unit)(n)}}),2)};t.LabeledListDivider=l,l.defaultHooks=r.pureComponentHooks,i.Item=c,i.Divider=l},function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(0),r=n(1);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name]},e.name)}))]})}},function(e,t,n){"use strict";var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(r){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,n){"use strict";var o=n(7),r=n(4),a=n(90);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(5),r=n(91),a=o["__core-js_shared__"]||r("__core-js_shared__",{});e.exports=a},function(e,t,n){"use strict";var o=n(5),r=n(92),a=o.WeakMap;e.exports="function"==typeof a&&/native code/.test(r(a))},function(e,t,n){"use strict";var o=n(16),r=n(94),a=n(22),i=n(13);e.exports=function(e,t){for(var n=r(t),c=i.f,l=a.f,d=0;dl;)o(c,n=t[l++])&&(~a(d,n)||d.push(n));return d}},function(e,t,n){"use strict";var o=n(97);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var o=n(7),r=n(13),a=n(8),i=n(64);e.exports=o?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),c=o.length,l=0;c>l;)r.f(e,n=o[l++],t[n]);return e}},function(e,t,n){"use strict";var o=n(37);e.exports=o("document","documentElement")},function(e,t,n){"use strict";var o=n(26),r=n(49).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?function(e){try{return r(e)}catch(t){return i.slice()}}(e):r(o(e))}},function(e,t,n){"use strict";var o=n(12);t.f=o},function(e,t,n){"use strict";var o=n(14),r=n(43),a=n(11),i=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),c=a(n.length),l=r(e,c),d=r(t,c),u=arguments.length>2?arguments[2]:undefined,s=i((u===undefined?c:r(u,c))-d,c-l),p=1;for(d0;)d in n?n[l]=n[d]:delete n[l],l+=p,d+=p;return n}},function(e,t,n){"use strict";var o=n(54),r=n(11),a=n(50);e.exports=function i(e,t,n,c,l,d,u,s){for(var p,m=l,f=0,h=!!u&&a(u,s,3);f0&&o(p))m=i(e,t,p,r(p.length),m,d-1)-1;else{if(m>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[m]=p}m++}f++}return m}},function(e,t,n){"use strict";var o=n(8);e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(i){var a=e["return"];throw a!==undefined&&o(a.call(e)),i}}},function(e,t,n){"use strict";var o=n(26),r=n(46),a=n(67),i=n(35),c=n(103),l=i.set,d=i.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:o(e),index:0,kind:t})}),(function(){var e=d(this),t=e.target,n=e.kind,o=e.index++;return!t||o>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:o,done:!1}:"values"==n?{value:t[o],done:!1}:{value:[o,t[o]],done:!1}}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";var o,r,a,i=n(36),c=n(30),l=n(16),d=n(12),u=n(40),s=d("iterator"),p=!1;[].keys&&("next"in(a=[].keys())?(r=i(i(a)))!==Object.prototype&&(o=r):p=!0),o==undefined&&(o={}),u||l(o,s)||c(o,s,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:p}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var o=n(26),r=n(31),a=n(11),i=n(41),c=n(25),l=Math.min,d=[].lastIndexOf,u=!!d&&1/[1].lastIndexOf(1,-0)<0,s=i("lastIndexOf"),p=c("indexOf",{ACCESSORS:!0,1:0}),m=u||!s||!p;e.exports=m?function(e){if(u)return d.apply(this,arguments)||0;var t=o(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=l(i,r(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:d},function(e,t,n){"use strict";var o=n(31),r=n(11);e.exports=function(e){if(e===undefined)return 0;var t=o(e),n=r(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var o=n(32),r=n(6),a=[].slice,i={},c=function(e,t,n){if(!(t in i)){for(var o=[],r=0;r1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),a(u.prototype,n?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return C(this,0===e?0:e,t)}}:{add:function(e){return C(this,e=0===e?0:e,e)}}),s&&o(u.prototype,"size",{get:function(){return m(this).size}}),u},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);d(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),u(t)}}},function(e,t,n){"use strict";var o=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:o(1+e)}},function(e,t,n){"use strict";var o=n(6),r=Math.floor;e.exports=function(e){return!o(e)&&isFinite(e)&&r(e)===e}},function(e,t,n){"use strict";var o=n(5),r=n(57).trim,a=n(82),i=o.parseInt,c=/^[+-]?0[Xx]/,l=8!==i(a+"08")||22!==i(a+"0x16");e.exports=l?function(e,t){var n=r(String(e));return i(n,t>>>0||(c.test(n)?16:10))}:i},function(e,t,n){"use strict";var o=n(7),r=n(64),a=n(26),i=n(72).f,c=function(e){return function(t){for(var n,c=a(t),l=r(c),d=l.length,u=0,s=[];d>u;)n=l[u++],o&&!i.call(c,n)||s.push(e?[n,c[n]]:c[n]);return s}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var o=n(5);e.exports=o.Promise},function(e,t,n){"use strict";var o=n(74);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(o)},function(e,t,n){"use strict";var o,r,a,i,c,l,d,u,s=n(5),p=n(22).f,m=n(33),f=n(109).set,h=n(150),C=s.MutationObserver||s.WebKitMutationObserver,b=s.process,g=s.Promise,N="process"==m(b),v=p(s,"queueMicrotask"),V=v&&v.value;V||(o=function(){var e,t;for(N&&(e=b.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},N?i=function(){b.nextTick(o)}:C&&!h?(c=!0,l=document.createTextNode(""),new C(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c}):g&&g.resolve?(d=g.resolve(undefined),u=d.then,i=function(){u.call(d,o)}):i=function(){f.call(s,o)}),e.exports=V||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},function(e,t,n){"use strict";var o=n(8),r=n(6),a=n(153);e.exports=function(e,t){if(o(e),r(t)&&t.constructor===e)return t;var n=a.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var o=n(32),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},function(e,t,n){"use strict";var o=n(2),r=n(85);o({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},function(e,t,n){"use strict";var o=n(74);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o)},function(e,t,n){"use strict";var o=n(349);e.exports=function(e,t){var n=o(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var o=n(14),r=n(11),a=n(101),i=n(100),c=n(50),l=n(10).aTypedArrayConstructor;e.exports=function(e){var t,n,d,u,s,p,m=o(e),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined,b=a(m);if(b!=undefined&&!i(b))for(p=(s=b.call(m)).next,m=[];!(u=p.call(s)).done;)m.push(u.value);for(C&&f>2&&(h=c(h,arguments[2],2)),n=r(m.length),d=new(l(this))(n),t=0;n>t;t++)d[t]=C?h(m[t],t):m[t];return d}},function(e,t,n){"use strict";var o=n(68),r=n(53).getWeakData,a=n(8),i=n(6),c=n(56),l=n(70),d=n(20),u=n(16),s=n(35),p=s.set,m=s.getterFor,f=d.find,h=d.findIndex,C=0,b=function(e){return e.frozen||(e.frozen=new g)},g=function(){this.entries=[]},N=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};g.prototype={get:function(e){var t=N(this,e);if(t)return t[1]},has:function(e){return!!N(this,e)},set:function(e,t){var n=N(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=h(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,d){var s=e((function(e,o){c(e,s,t),p(e,{type:t,id:C++,frozen:undefined}),o!=undefined&&l(o,e[d],e,n)})),f=m(t),h=function(e,t,n){var o=f(e),i=r(a(t),!0);return!0===i?b(o).set(t,n):i[o.id]=n,e};return o(s.prototype,{"delete":function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?b(t)["delete"](e):n&&u(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?b(t).has(e):n&&u(n,t.id)}}),o(s.prototype,n?{get:function(e){var t=f(this);if(i(e)){var n=r(e);return!0===n?b(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return h(this,e,t)}}:{add:function(e){return h(this,e,!0)}}),s}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var o=n(161),r=n(15);function a(e,t,n,o,r,a,i){try{var c=e[a](i),l=c.value}catch(d){return void n(d)}c.done?t(l):Promise.resolve(l).then(o,r)}var i,c,l,d,u,s=(0,n(39).createLogger)("drag"),p=!1,m=!1,f=[0,0],h=function(e){return(0,r.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},C=function(e,t){return(0,r.winset)(e,"pos",t[0]+","+t[1])},b=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t,o,r,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s.log("setting up"),i=e.config.window,n.next=4,h(i);case 4:t=n.sent,f=[t[0]-window.screenLeft,t[1]-window.screenTop],o=g(t),r=o[0],a=o[1],r&&C(i,a),s.debug("current state",{ref:i,screenOffset:f});case 9:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function c(e){a(i,o,r,c,l,"next",e)}function l(e){a(i,o,r,c,l,"throw",e)}c(undefined)}))});return function(e){return t.apply(this,arguments)}}();t.setupDrag=b;var g=function(e){var t=e[0],n=e[1],o=!1;return t<0?(t=0,o=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,o=!0),n<0?(n=0,o=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,o=!0),[o,[t,n]]};t.dragStartHandler=function(e){s.log("drag start"),p=!0,c=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",v),document.addEventListener("mouseup",N),v(e)};var N=function _(e){s.log("drag end"),v(e),document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",_),p=!1},v=function(e){p&&(e.preventDefault(),C(i,(0,o.vecAdd)([e.screenX,e.screenY],f,c)))};t.resizeStartHandler=function(e,t){return function(n){l=[e,t],s.log("resize start",l),m=!0,c=[window.screenLeft-n.screenX,window.screenTop-n.screenY],d=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",y),document.addEventListener("mouseup",V),y(n)}};var V=function k(e){s.log("resize end",u),y(e),document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",k),m=!1},y=function(e){m&&(e.preventDefault(),(u=(0,o.vecAdd)(d,(0,o.vecMultiply)(l,(0,o.vecAdd)([e.screenX,e.screenY],(0,o.vecInverse)([window.screenLeft,window.screenTop]),c,[1,1]))))[0]=Math.max(u[0],250),u[1]=Math.max(u[1],120),function(e,t){(0,r.winset)(e,"size",t[0]+","+t[1])}(i,u))}},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var o=n(17);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n35;return(0,o.createVNode)(1,"div",(0,r.classes)(["Tooltip",i&&"Tooltip--long",a&&"Tooltip--"+a]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var o=n(0),r=n(9),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.collapsing,n=e.className,c=e.content,l=e.children,d=i(e,["collapsing","className","content","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"table",className:(0,r.classes)(["Table",t&&"Table--collapsing",n])},d,{children:(0,o.createVNode)(1,"tbody",null,[c,l],0)})))};t.Table=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.className,n=e.header,c=i(e,["className","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"tr",className:(0,r.classes)(["Table__row",n&&"Table__row--header",t])},c)))};t.TableRow=l,l.defaultHooks=r.pureComponentHooks;var d=function(e){var t=e.className,n=e.collapsing,c=e.header,l=i(e,["className","collapsing","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"td",className:(0,r.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t])},l)))};t.TableCell=d,d.defaultHooks=r.pureComponentHooks,c.Row=l,c.Cell=d},function(e,t,n){"use strict";t.__esModule=!0,t.AccessList=void 0;var o=n(0),r=n(1),a=n(17);t.AccessList=function(e){var t=e.accesses,n=void 0===t?[]:t,i=e.selectedList,c=void 0===i?[]:i,l=e.accessMod,d=e.grantAll,u=e.denyAll,s=e.grantDep,p=e.denyDep,m={0:{icon:"times-circle",color:"bad"},1:{icon:"stop-circle",color:null},2:{icon:"check-circle",color:"good"}},f=function(e){var t=!1,n=!1;return e.forEach((function(e){c.includes(e.ref)?t=!0:n=!0})),!t&&n?0:t&&n?1:2};return(0,o.createComponentVNode)(2,r.Section,{title:"Access",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:"check-double",content:"Grant All",color:"good",onClick:function(){return d()}}),(0,o.createComponentVNode)(2,r.Button,{icon:"undo",content:"Deny All",color:"bad",onClick:function(){return u()}})],4),children:(0,o.createComponentVNode)(2,r.Tabs,{vertical:!0,altSelection:!0,children:n.map((function(e){var t=(0,a.sortBy)((function(e){return e.desc}))(e.accesses||[]),n=m[f(t)].icon,i=m[f(t)].color;return(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:e.name,color:i,icon:n,children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{mr:0,children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"check",content:"Grant Region",color:"good",onClick:function(){return s(e.regid)}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{ml:0,children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"times",content:"Deny Region",color:"bad",onClick:function(){return p(e.regid)}})})]}),t.map((function(e){return(0,o.createComponentVNode)(2,r.Button.Checkbox,{fluid:!0,content:e.desc,checked:c.includes(e.ref),onClick:function(){return l(e.ref)}},e.desc)}))]},e.name)}))})})}},function(e,t,n){n(167),n(168),n(169),n(170),n(171),n(172),n(173),e.exports=n(174)},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(196),n(197),n(198),n(200),n(202),n(203),n(204),n(137),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(213),n(214),n(215),n(216),n(217),n(218),n(219),n(221),n(222),n(223),n(224),n(225),n(227),n(228),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(243),n(245),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(255),n(256),n(257),n(259),n(260),n(261),n(262),n(263),n(264),n(266),n(267),n(269),n(271),n(272),n(273),n(274),n(275),n(276),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(291),n(292),n(293),n(295),n(296),n(297),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(308),n(309),n(310),n(311),n(312),n(313),n(314),n(154),n(315),n(316),n(317),n(318),n(319),n(320),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(344),n(345),n(346),n(347),n(348),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386),n(387);var o=n(0);n(389),n(390);var r=n(391),a=(n(159),n(3)),i=n(15),c=n(160),l=n(39),d=n(392),u=(0,l.createLogger)(),s=(0,d.createStore)(),p=document.getElementById("react-root"),m=!0,f=function(){for(s.subscribe((function(){!function(){try{var e=s.getState();m&&(u.log("initial render",e),(0,c.setupDrag)(e));var t=n(394).Layout,r=(0,o.createComponentVNode)(2,t,{state:e,dispatch:s.dispatch});(0,o.render)(r,p)}catch(a){u.error("rendering error",a)}m&&(m=!1)}()})),window.update=window.initialize=function(e){var t=function(e){var t=function(e,t){return"object"==typeof t&&null!==t&&t.__number__?parseFloat(t.__number__):t};i.tridentVersion<=4&&(t=undefined);try{return JSON.parse(e,t)}catch(o){u.log(o),u.log("What we got:",e);var n=o&&o.message;throw new Error("JSON parsing error: "+n)}}(e);s.dispatch((0,a.backendUpdate)(t))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}(0,r.loadCSS)("font-awesome.css")};i.tridentVersion<=4&&"loading"===document.readyState?document.addEventListener("DOMContentLoaded",f):f()},function(e,t,n){"use strict";var o=n(2),r=n(5),a=n(37),i=n(40),c=n(7),l=n(97),d=n(129),u=n(4),s=n(16),p=n(54),m=n(6),f=n(8),h=n(14),C=n(26),b=n(34),g=n(48),N=n(44),v=n(64),V=n(49),y=n(132),_=n(96),k=n(22),x=n(13),L=n(72),B=n(30),w=n(24),S=n(93),I=n(73),T=n(61),A=n(60),P=n(12),E=n(133),R=n(27),M=n(45),O=n(35),F=n(20).forEach,D=I("hidden"),j=P("toPrimitive"),z=O.set,G=O.getterFor("Symbol"),H=Object.prototype,U=r.Symbol,K=a("JSON","stringify"),W=k.f,Y=x.f,q=y.f,$=L.f,Q=S("symbols"),X=S("op-symbols"),J=S("string-to-symbol-registry"),Z=S("symbol-to-string-registry"),ee=S("wks"),te=r.QObject,ne=!te||!te.prototype||!te.prototype.findChild,oe=c&&u((function(){return 7!=N(Y({},"a",{get:function(){return Y(this,"a",{value:7}).a}})).a}))?function(e,t,n){var o=W(H,t);o&&delete H[t],Y(e,t,n),o&&e!==H&&Y(H,t,o)}:Y,re=function(e,t){var n=Q[e]=N(U.prototype);return z(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ae=d?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ie=function(e,t,n){e===H&&ie(X,t,n),f(e);var o=b(t,!0);return f(n),s(Q,o)?(n.enumerable?(s(e,D)&&e[D][o]&&(e[D][o]=!1),n=N(n,{enumerable:g(0,!1)})):(s(e,D)||Y(e,D,g(1,{})),e[D][o]=!0),oe(e,o,n)):Y(e,o,n)},ce=function(e,t){f(e);var n=C(t),o=v(n).concat(pe(n));return F(o,(function(t){c&&!de.call(n,t)||ie(e,t,n[t])})),e},le=function(e,t){return t===undefined?N(e):ce(N(e),t)},de=function(e){var t=b(e,!0),n=$.call(this,t);return!(this===H&&s(Q,t)&&!s(X,t))&&(!(n||!s(this,t)||!s(Q,t)||s(this,D)&&this[D][t])||n)},ue=function(e,t){var n=C(e),o=b(t,!0);if(n!==H||!s(Q,o)||s(X,o)){var r=W(n,o);return!r||!s(Q,o)||s(n,D)&&n[D][o]||(r.enumerable=!0),r}},se=function(e){var t=q(C(e)),n=[];return F(t,(function(e){s(Q,e)||s(T,e)||n.push(e)})),n},pe=function(e){var t=e===H,n=q(t?X:C(e)),o=[];return F(n,(function(e){!s(Q,e)||t&&!s(H,e)||o.push(Q[e])})),o};(l||(w((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=A(e),n=function o(e){this===H&&o.call(X,e),s(this,D)&&s(this[D],t)&&(this[D][t]=!1),oe(this,t,g(1,e))};return c&&ne&&oe(H,t,{configurable:!0,set:n}),re(t,e)}).prototype,"toString",(function(){return G(this).tag})),w(U,"withoutSetter",(function(e){return re(A(e),e)})),L.f=de,x.f=ie,k.f=ue,V.f=y.f=se,_.f=pe,E.f=function(e){return re(P(e),e)},c&&(Y(U.prototype,"description",{configurable:!0,get:function(){return G(this).description}}),i||w(H,"propertyIsEnumerable",de,{unsafe:!0}))),o({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:U}),F(v(ee),(function(e){R(e)})),o({target:"Symbol",stat:!0,forced:!l},{"for":function(e){var t=String(e);if(s(J,t))return J[t];var n=U(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(s(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),o({target:"Object",stat:!0,forced:!l,sham:!c},{create:le,defineProperty:ie,defineProperties:ce,getOwnPropertyDescriptor:ue}),o({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:pe}),o({target:"Object",stat:!0,forced:u((function(){_.f(1)}))},{getOwnPropertySymbols:function(e){return _.f(h(e))}}),K)&&o({target:"JSON",stat:!0,forced:!l||u((function(){var e=U();return"[null]"!=K([e])||"{}"!=K({a:e})||"{}"!=K(Object(e))}))},{stringify:function(e,t,n){for(var o,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(o=t,(m(t)||e!==undefined)&&!ae(e))return p(t)||(t=function(e,t){if("function"==typeof o&&(t=o.call(this,e,t)),!ae(t))return t}),r[1]=t,K.apply(null,r)}});U.prototype[j]||B(U.prototype,j,U.prototype.valueOf),M(U,"Symbol"),T[D]=!0},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(5),i=n(16),c=n(6),l=n(13).f,d=n(126),u=a.Symbol;if(r&&"function"==typeof u&&(!("description"in u.prototype)||u().description!==undefined)){var s={},p=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof p?new u(e):e===undefined?u():u(e);return""===e&&(s[t]=!0),t};d(p,u);var m=p.prototype=u.prototype;m.constructor=p;var f=m.toString,h="Symbol(test)"==String(u("test")),C=/^Symbol\((.*)\)[^)]+$/;l(m,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=f.call(e);if(i(s,e))return"";var n=h?t.slice(7,-1):t.replace(C,"$1");return""===n?undefined:n}}),o({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(54),i=n(6),c=n(14),l=n(11),d=n(51),u=n(65),s=n(66),p=n(12),m=n(98),f=p("isConcatSpreadable"),h=m>=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),C=s("concat"),b=function(e){if(!i(e))return!1;var t=e[f];return t!==undefined?!!t:a(e)};o({target:"Array",proto:!0,forced:!h||!C},{concat:function(e){var t,n,o,r,a,i=c(this),s=u(i,0),p=0;for(t=-1,o=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");d(s,p++,a)}return s.length=p,s}})},function(e,t,n){"use strict";var o=n(2),r=n(134),a=n(46);o({target:"Array",proto:!0},{copyWithin:r}),a("copyWithin")},function(e,t,n){"use strict";var o=n(2),r=n(20).every,a=n(41),i=n(25),c=a("every"),l=i("every");o({target:"Array",proto:!0,forced:!c||!l},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(99),a=n(46);o({target:"Array",proto:!0},{fill:r}),a("fill")},function(e,t,n){"use strict";var o=n(2),r=n(20).filter,a=n(66),i=n(25),c=a("filter"),l=i("filter");o({target:"Array",proto:!0,forced:!c||!l},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(20).find,a=n(46),i=n(25),c=!0,l=i("find");"find"in[]&&Array(1).find((function(){c=!1})),o({target:"Array",proto:!0,forced:c||!l},{find:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("find")},function(e,t,n){"use strict";var o=n(2),r=n(20).findIndex,a=n(46),i=n(25),c=!0,l=i("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){c=!1})),o({target:"Array",proto:!0,forced:c||!l},{findIndex:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("findIndex")},function(e,t,n){"use strict";var o=n(2),r=n(135),a=n(14),i=n(11),c=n(31),l=n(65);o({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=a(this),n=i(t.length),o=l(t,0);return o.length=r(o,t,t,n,0,e===undefined?1:c(e)),o}})},function(e,t,n){"use strict";var o=n(2),r=n(135),a=n(14),i=n(11),c=n(32),l=n(65);o({target:"Array",proto:!0},{flatMap:function(e){var t,n=a(this),o=i(n.length);return c(e),(t=l(n,0)).length=r(t,n,n,o,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var o=n(2),r=n(199);o({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(e,t,n){"use strict";var o=n(20).forEach,r=n(41),a=n(25),i=r("forEach"),c=a("forEach");e.exports=i&&c?[].forEach:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var o=n(2),r=n(201);o({target:"Array",stat:!0,forced:!n(76)((function(e){Array.from(e)}))},{from:r})},function(e,t,n){"use strict";var o=n(50),r=n(14),a=n(136),i=n(100),c=n(11),l=n(51),d=n(101);e.exports=function(e){var t,n,u,s,p,m,f=r(e),h="function"==typeof this?this:Array,C=arguments.length,b=C>1?arguments[1]:undefined,g=b!==undefined,N=d(f),v=0;if(g&&(b=o(b,C>2?arguments[2]:undefined,2)),N==undefined||h==Array&&i(N))for(n=new h(t=c(f.length));t>v;v++)m=g?b(f[v],v):f[v],l(n,v,m);else for(p=(s=N.call(f)).next,n=new h;!(u=p.call(s)).done;v++)m=g?a(s,b,[u.value,v],!0):u.value,l(n,v,m);return n.length=v,n}},function(e,t,n){"use strict";var o=n(2),r=n(62).includes,a=n(46);o({target:"Array",proto:!0,forced:!n(25)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("includes")},function(e,t,n){"use strict";var o=n(2),r=n(62).indexOf,a=n(41),i=n(25),c=[].indexOf,l=!!c&&1/[1].indexOf(1,-0)<0,d=a("indexOf"),u=i("indexOf",{ACCESSORS:!0,1:0});o({target:"Array",proto:!0,forced:l||!d||!u},{indexOf:function(e){return l?c.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(2)({target:"Array",stat:!0},{isArray:n(54)})},function(e,t,n){"use strict";var o=n(138).IteratorPrototype,r=n(44),a=n(48),i=n(45),c=n(67),l=function(){return this};e.exports=function(e,t,n){var d=t+" Iterator";return e.prototype=r(o,{next:a(1,n)}),i(e,d,!1,!0),c[d]=l,e}},function(e,t,n){"use strict";var o=n(2),r=n(59),a=n(26),i=n(41),c=[].join,l=r!=Object,d=i("join",",");o({target:"Array",proto:!0,forced:l||!d},{join:function(e){return c.call(a(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var o=n(2),r=n(140);o({target:"Array",proto:!0,forced:r!==[].lastIndexOf},{lastIndexOf:r})},function(e,t,n){"use strict";var o=n(2),r=n(20).map,a=n(66),i=n(25),c=a("map"),l=i("map");o({target:"Array",proto:!0,forced:!c||!l},{map:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(51);o({target:"Array",stat:!0,forced:r((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)a(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var o=n(2),r=n(77).left,a=n(41),i=n(25),c=a("reduce"),l=i("reduce",{1:0});o({target:"Array",proto:!0,forced:!c||!l},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(77).right,a=n(41),i=n(25),c=a("reduceRight"),l=i("reduce",{1:0});o({target:"Array",proto:!0,forced:!c||!l},{reduceRight:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(6),a=n(54),i=n(43),c=n(11),l=n(26),d=n(51),u=n(12),s=n(66),p=n(25),m=s("slice"),f=p("slice",{ACCESSORS:!0,0:0,1:2}),h=u("species"),C=[].slice,b=Math.max;o({target:"Array",proto:!0,forced:!m||!f},{slice:function(e,t){var n,o,u,s=l(this),p=c(s.length),m=i(e,p),f=i(t===undefined?p:t,p);if(a(s)&&("function"!=typeof(n=s.constructor)||n!==Array&&!a(n.prototype)?r(n)&&null===(n=n[h])&&(n=undefined):n=undefined,n===Array||n===undefined))return C.call(s,m,f);for(o=new(n===undefined?Array:n)(b(f-m,0)),u=0;m1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(32),a=n(14),i=n(4),c=n(41),l=[],d=l.sort,u=i((function(){l.sort(undefined)})),s=i((function(){l.sort(null)})),p=c("sort");o({target:"Array",proto:!0,forced:u||!s||!p},{sort:function(e){return e===undefined?d.call(a(this)):d.call(a(this),r(e))}})},function(e,t,n){"use strict";n(55)("Array")},function(e,t,n){"use strict";var o=n(2),r=n(43),a=n(31),i=n(11),c=n(14),l=n(65),d=n(51),u=n(66),s=n(25),p=u("splice"),m=s("splice",{ACCESSORS:!0,0:0,1:2}),f=Math.max,h=Math.min;o({target:"Array",proto:!0,forced:!p||!m},{splice:function(e,t){var n,o,u,s,p,m,C=c(this),b=i(C.length),g=r(e,b),N=arguments.length;if(0===N?n=o=0:1===N?(n=0,o=b-g):(n=N-2,o=h(f(a(t),0),b-g)),b+n-o>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(C,o),s=0;sb-o+n;s--)delete C[s-1]}else if(n>o)for(s=b-o;s>g;s--)m=s+n-1,(p=s+o-1)in C?C[m]=C[p]:delete C[m];for(s=0;s>1,h=23===t?r(2,-24)-r(2,-77):0,C=e<0||0===e&&1/e<0?1:0,b=0;for((e=o(e))!=e||e===1/0?(d=e!=e?1:0,l=m):(l=a(i(e)/c),e*(u=r(2,-l))<1&&(l--,u*=2),(e+=l+f>=1?h/u:h*r(2,1-f))*u>=2&&(l++,u/=2),l+f>=m?(d=0,l=m):l+f>=1?(d=(e*u-1)*r(2,t),l+=f):(d=e*r(2,f-1)*r(2,t),l=0));t>=8;s[b++]=255&d,d/=256,t-=8);for(l=l<0;s[b++]=255&l,l/=256,p-=8);return s[--b]|=128*C,s},unpack:function(e,t){var n,o=e.length,a=8*o-t-1,i=(1<>1,l=a-7,d=o-1,u=e[d--],s=127&u;for(u>>=7;l>0;s=256*s+e[d],d--,l-=8);for(n=s&(1<<-l)-1,s>>=-l,l+=t;l>0;n=256*n+e[d],d--,l-=8);if(0===s)s=1-c;else{if(s===i)return n?NaN:u?-1/0:1/0;n+=r(2,t),s-=c}return(u?-1:1)*n*r(2,s-t)}}},function(e,t,n){"use strict";var o=n(2),r=n(10);o({target:"ArrayBuffer",stat:!0,forced:!r.NATIVE_ARRAY_BUFFER_VIEWS},{isView:r.isView})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(78),i=n(8),c=n(43),l=n(11),d=n(47),u=a.ArrayBuffer,s=a.DataView,p=u.prototype.slice;o({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new u(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(p!==undefined&&t===undefined)return p.call(i(this),e);for(var n=i(this).byteLength,o=c(e,n),r=c(t===undefined?n:t,n),a=new(d(this,u))(l(r-o)),m=new s(this),f=new s(a),h=0;o9999?"+":"";return n+r(a(e),n?6:4,0)+"-"+r(this.getUTCMonth()+1,2,0)+"-"+r(this.getUTCDate(),2,0)+"T"+r(this.getUTCHours(),2,0)+":"+r(this.getUTCMinutes(),2,0)+":"+r(this.getUTCSeconds(),2,0)+"."+r(t,3,0)+"Z"}:l},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(14),i=n(34);o({target:"Date",proto:!0,forced:r((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=a(this),n=i(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var o=n(30),r=n(229),a=n(12)("toPrimitive"),i=Date.prototype;a in i||o(i,a,r)},function(e,t,n){"use strict";var o=n(8),r=n(34);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return r(o(this),"number"!==e)}},function(e,t,n){"use strict";var o=n(24),r=Date.prototype,a=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&o(r,"toString",(function(){var e=i.call(this);return e==e?a.call(this):"Invalid Date"}))},function(e,t,n){"use strict";n(2)({target:"Function",proto:!0},{bind:n(142)})},function(e,t,n){"use strict";var o=n(6),r=n(13),a=n(36),i=n(12)("hasInstance"),c=Function.prototype;i in c||r.f(c,i,{value:function(e){if("function"!=typeof this||!o(e))return!1;if(!o(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var o=n(7),r=n(13).f,a=Function.prototype,i=a.toString,c=/^\s*function ([^ (]*)/;o&&!("name"in a)&&r(a,"name",{configurable:!0,get:function(){try{return i.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var o=n(5);n(45)(o.JSON,"JSON",!0)},function(e,t,n){"use strict";var o=n(79),r=n(143);e.exports=o("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(2),r=n(144),a=Math.acosh,i=Math.log,c=Math.sqrt,l=Math.LN2;o({target:"Math",stat:!0,forced:!a||710!=Math.floor(a(Number.MAX_VALUE))||a(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?i(e)+l:r(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var o=n(2),r=Math.asinh,a=Math.log,i=Math.sqrt;o({target:"Math",stat:!0,forced:!(r&&1/r(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):a(e+i(e*e+1)):e}})},function(e,t,n){"use strict";var o=n(2),r=Math.atanh,a=Math.log;o({target:"Math",stat:!0,forced:!(r&&1/r(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:a((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var o=n(2),r=n(108),a=Math.abs,i=Math.pow;o({target:"Math",stat:!0},{cbrt:function(e){return r(e=+e)*i(a(e),1/3)}})},function(e,t,n){"use strict";var o=n(2),r=Math.floor,a=Math.log,i=Math.LOG2E;o({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-r(a(e+.5)*i):32}})},function(e,t,n){"use strict";var o=n(2),r=n(81),a=Math.cosh,i=Math.abs,c=Math.E;o({target:"Math",stat:!0,forced:!a||a(710)===Infinity},{cosh:function(e){var t=r(i(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var o=n(2),r=n(81);o({target:"Math",stat:!0,forced:r!=Math.expm1},{expm1:r})},function(e,t,n){"use strict";n(2)({target:"Math",stat:!0},{fround:n(244)})},function(e,t,n){"use strict";var o=n(108),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),d=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=r(e),u=o(e);return al||n!=n?u*Infinity:u*n}},function(e,t,n){"use strict";var o=n(2),r=Math.hypot,a=Math.abs,i=Math.sqrt;o({target:"Math",stat:!0,forced:!!r&&r(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,o,r=0,c=0,l=arguments.length,d=0;c0?(o=n/d)*o:n;return d===Infinity?Infinity:d*i(r)}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=Math.imul;o({target:"Math",stat:!0,forced:r((function(){return-5!=a(4294967295,5)||2!=a.length}))},{imul:function(e,t){var n=+e,o=+t,r=65535&n,a=65535&o;return 0|r*a+((65535&n>>>16)*a+r*(65535&o>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var o=n(2),r=Math.log,a=Math.LOG10E;o({target:"Math",stat:!0},{log10:function(e){return r(e)*a}})},function(e,t,n){"use strict";n(2)({target:"Math",stat:!0},{log1p:n(144)})},function(e,t,n){"use strict";var o=n(2),r=Math.log,a=Math.LN2;o({target:"Math",stat:!0},{log2:function(e){return r(e)/a}})},function(e,t,n){"use strict";n(2)({target:"Math",stat:!0},{sign:n(108)})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(81),i=Math.abs,c=Math.exp,l=Math.E;o({target:"Math",stat:!0,forced:r((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return i(e=+e)<1?(a(e)-a(-e))/2:(c(e-1)-c(-e-1))*(l/2)}})},function(e,t,n){"use strict";var o=n(2),r=n(81),a=Math.exp;o({target:"Math",stat:!0},{tanh:function(e){var t=r(e=+e),n=r(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(a(e)+a(-e))}})},function(e,t,n){"use strict";n(45)(Math,"Math",!0)},function(e,t,n){"use strict";var o=n(2),r=Math.ceil,a=Math.floor;o({target:"Math",stat:!0},{trunc:function(e){return(e>0?a:r)(e)}})},function(e,t,n){"use strict";var o=n(7),r=n(5),a=n(63),i=n(24),c=n(16),l=n(33),d=n(80),u=n(34),s=n(4),p=n(44),m=n(49).f,f=n(22).f,h=n(13).f,C=n(57).trim,b=r.Number,g=b.prototype,N="Number"==l(p(g)),v=function(e){var t,n,o,r,a,i,c,l,d=u(e,!1);if("string"==typeof d&&d.length>2)if(43===(t=(d=C(d)).charCodeAt(0))||45===t){if(88===(n=d.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(d.charCodeAt(1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+d}for(i=(a=d.slice(2)).length,c=0;cr)return NaN;return parseInt(a,o)}return+d};if(a("Number",!b(" 0o1")||!b("0b1")||b("+0x1"))){for(var V,y=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof y&&(N?s((function(){g.valueOf.call(n)})):"Number"!=l(n))?d(new b(v(t)),n,y):v(t)},_=o?m(b):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;_.length>k;k++)c(b,V=_[k])&&!c(y,V)&&h(y,V,f(b,V));y.prototype=g,g.constructor=y,i(r,"Number",y)}},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{isFinite:n(258)})},function(e,t,n){"use strict";var o=n(5).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{isInteger:n(145)})},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var o=n(2),r=n(145),a=Math.abs;o({target:"Number",stat:!0},{isSafeInteger:function(e){return r(e)&&a(e)<=9007199254740991}})},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(2)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var o=n(2),r=n(265);o({target:"Number",stat:!0,forced:Number.parseFloat!=r},{parseFloat:r})},function(e,t,n){"use strict";var o=n(5),r=n(57).trim,a=n(82),i=o.parseFloat,c=1/i(a+"-0")!=-Infinity;e.exports=c?function(e){var t=r(String(e)),n=i(t);return 0===n&&"-"==t.charAt(0)?-0:n}:i},function(e,t,n){"use strict";var o=n(2),r=n(146);o({target:"Number",stat:!0,forced:Number.parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o=n(2),r=n(31),a=n(268),i=n(107),c=n(4),l=1..toFixed,d=Math.floor,u=function s(e,t,n){return 0===t?n:t%2==1?s(e,t-1,n*e):s(e*e,t/2,n)};o({target:"Number",proto:!0,forced:l&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){l.call({})}))},{toFixed:function(e){var t,n,o,c,l=a(this),s=r(e),p=[0,0,0,0,0,0],m="",f="0",h=function(e,t){for(var n=-1,o=t;++n<6;)o+=e*p[n],p[n]=o%1e7,o=d(o/1e7)},C=function(e){for(var t=6,n=0;--t>=0;)n+=p[t],p[t]=d(n/e),n=n%e*1e7},b=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==p[e]){var n=String(p[e]);t=""===t?n:t+i.call("0",7-n.length)+n}return t};if(s<0||s>20)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(m="-",l=-l),l>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(l*u(2,69,1))-69)<0?l*u(2,-t,1):l/u(2,t,1),n*=4503599627370496,(t=52-t)>0){for(h(0,n),o=s;o>=7;)h(1e7,0),o-=7;for(h(u(10,o,1),0),o=t-1;o>=23;)C(1<<23),o-=23;C(1<0?m+((c=f.length)<=s?"0."+i.call("0",s-c)+f:f.slice(0,c-s)+"."+f.slice(c-s)):m+f}})},function(e,t,n){"use strict";var o=n(33);e.exports=function(e){if("number"!=typeof e&&"Number"!=o(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var o=n(2),r=n(270);o({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,n){"use strict";var o=n(7),r=n(4),a=n(64),i=n(96),c=n(72),l=n(14),d=n(59),u=Object.assign,s=Object.defineProperty;e.exports=!u||r((function(){if(o&&1!==u({b:1},u(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||"abcdefghijklmnopqrst"!=a(u({},t)).join("")}))?function(e,t){for(var n=l(e),r=arguments.length,u=1,s=i.f,p=c.f;r>u;)for(var m,f=d(arguments[u++]),h=s?a(f).concat(s(f)):a(f),C=h.length,b=0;C>b;)m=h[b++],o&&!p.call(f,m)||(n[m]=f[m]);return n}:u},function(e,t,n){"use strict";n(2)({target:"Object",stat:!0,sham:!n(7)},{create:n(44)})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(83),i=n(14),c=n(32),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineGetter__:function(e,t){l.f(i(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(2),r=n(7);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperties:n(130)})},function(e,t,n){"use strict";var o=n(2),r=n(7);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:n(13).f})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(83),i=n(14),c=n(32),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineSetter__:function(e,t){l.f(i(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(2),r=n(147).entries;o({target:"Object",stat:!0},{entries:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(2),r=n(69),a=n(4),i=n(6),c=n(53).onFreeze,l=Object.freeze;o({target:"Object",stat:!0,forced:a((function(){l(1)})),sham:!r},{freeze:function(e){return l&&i(e)?l(c(e)):e}})},function(e,t,n){"use strict";var o=n(2),r=n(70),a=n(51);o({target:"Object",stat:!0},{fromEntries:function(e){var t={};return r(e,(function(e,n){a(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(26),i=n(22).f,c=n(7),l=r((function(){i(1)}));o({target:"Object",stat:!0,forced:!c||l,sham:!c},{getOwnPropertyDescriptor:function(e,t){return i(a(e),t)}})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(94),i=n(26),c=n(22),l=n(51);o({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,n,o=i(e),r=c.f,d=a(o),u={},s=0;d.length>s;)(n=r(o,t=d[s++]))!==undefined&&l(u,t,n);return u}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(132).f;o({target:"Object",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:a})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(14),i=n(36),c=n(104);o({target:"Object",stat:!0,forced:r((function(){i(1)})),sham:!c},{getPrototypeOf:function(e){return i(a(e))}})},function(e,t,n){"use strict";n(2)({target:"Object",stat:!0},{is:n(148)})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(6),i=Object.isExtensible;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isExtensible:function(e){return!!a(e)&&(!i||i(e))}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(6),i=Object.isFrozen;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isFrozen:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(2),r=n(4),a=n(6),i=Object.isSealed;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isSealed:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(2),r=n(14),a=n(64);o({target:"Object",stat:!0,forced:n(4)((function(){a(1)}))},{keys:function(e){return a(r(e))}})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(83),i=n(14),c=n(34),l=n(36),d=n(22).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupGetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=d(n,o))return t.get}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(83),i=n(14),c=n(34),l=n(36),d=n(22).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupSetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=d(n,o))return t.set}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(2),r=n(6),a=n(53).onFreeze,i=n(69),c=n(4),l=Object.preventExtensions;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{preventExtensions:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";var o=n(2),r=n(6),a=n(53).onFreeze,i=n(69),c=n(4),l=Object.seal;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{seal:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";n(2)({target:"Object",stat:!0},{setPrototypeOf:n(52)})},function(e,t,n){"use strict";var o=n(102),r=n(24),a=n(294);o||r(Object.prototype,"toString",a,{unsafe:!0})},function(e,t,n){"use strict";var o=n(102),r=n(75);e.exports=o?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,n){"use strict";var o=n(2),r=n(147).values;o({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(2),r=n(146);o({global:!0,forced:parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o,r,a,i,c=n(2),l=n(40),d=n(5),u=n(37),s=n(149),p=n(24),m=n(68),f=n(45),h=n(55),C=n(6),b=n(32),g=n(56),N=n(33),v=n(92),V=n(70),y=n(76),_=n(47),k=n(109).set,x=n(151),L=n(152),B=n(298),w=n(153),S=n(299),I=n(35),T=n(63),A=n(12),P=n(98),E=A("species"),R="Promise",M=I.get,O=I.set,F=I.getterFor(R),D=s,j=d.TypeError,z=d.document,G=d.process,H=u("fetch"),U=w.f,K=U,W="process"==N(G),Y=!!(z&&z.createEvent&&d.dispatchEvent),q=T(R,(function(){if(!(v(D)!==String(D))){if(66===P)return!0;if(!W&&"function"!=typeof PromiseRejectionEvent)return!0}if(l&&!D.prototype["finally"])return!0;if(P>=51&&/native code/.test(D))return!1;var e=D.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[E]=t,!(e.then((function(){}))instanceof t)})),$=q||!y((function(e){D.all(e)["catch"]((function(){}))})),Q=function(e){var t;return!(!C(e)||"function"!=typeof(t=e.then))&&t},X=function(e,t,n){if(!t.notified){t.notified=!0;var o=t.reactions;x((function(){for(var r=t.value,a=1==t.state,i=0;o.length>i;){var c,l,d,u=o[i++],s=a?u.ok:u.fail,p=u.resolve,m=u.reject,f=u.domain;try{s?(a||(2===t.rejection&&te(e,t),t.rejection=1),!0===s?c=r:(f&&f.enter(),c=s(r),f&&(f.exit(),d=!0)),c===u.promise?m(j("Promise-chain cycle")):(l=Q(c))?l.call(c,p,m):p(c)):m(r)}catch(h){f&&!d&&f.exit(),m(h)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Z(e,t)}))}},J=function(e,t,n){var o,r;Y?((o=z.createEvent("Event")).promise=t,o.reason=n,o.initEvent(e,!1,!0),d.dispatchEvent(o)):o={promise:t,reason:n},(r=d["on"+e])?r(o):"unhandledrejection"===e&&B("Unhandled promise rejection",n)},Z=function(e,t){k.call(d,(function(){var n,o=t.value;if(ee(t)&&(n=S((function(){W?G.emit("unhandledRejection",o,e):J("unhandledrejection",e,o)})),t.rejection=W||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){k.call(d,(function(){W?G.emit("rejectionHandled",e):J("rejectionhandled",e,t.value)}))},ne=function(e,t,n,o){return function(r){e(t,n,r,o)}},oe=function(e,t,n,o){t.done||(t.done=!0,o&&(t=o),t.value=n,t.state=2,X(e,t,!0))},re=function ae(e,t,n,o){if(!t.done){t.done=!0,o&&(t=o);try{if(e===n)throw j("Promise can't be resolved itself");var r=Q(n);r?x((function(){var o={done:!1};try{r.call(n,ne(ae,e,o,t),ne(oe,e,o,t))}catch(a){oe(e,o,a,t)}})):(t.value=n,t.state=1,X(e,t,!1))}catch(a){oe(e,{done:!1},a,t)}}};q&&(D=function(e){g(this,D,R),b(e),o.call(this);var t=M(this);try{e(ne(re,this,t),ne(oe,this,t))}catch(n){oe(this,t,n)}},(o=function(e){O(this,{type:R,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=m(D.prototype,{then:function(e,t){var n=F(this),o=U(_(this,D));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=W?G.domain:undefined,n.parent=!0,n.reactions.push(o),0!=n.state&&X(this,n,!1),o.promise},"catch":function(e){return this.then(undefined,e)}}),r=function(){var e=new o,t=M(e);this.promise=e,this.resolve=ne(re,e,t),this.reject=ne(oe,e,t)},w.f=U=function(e){return e===D||e===a?new r(e):K(e)},l||"function"!=typeof s||(i=s.prototype.then,p(s.prototype,"then",(function(e,t){var n=this;return new D((function(e,t){i.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof H&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return L(D,H.apply(d,arguments))}}))),c({global:!0,wrap:!0,forced:q},{Promise:D}),f(D,R,!1,!0),h(R),a=u(R),c({target:R,stat:!0,forced:q},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:R,stat:!0,forced:l||q},{resolve:function(e){return L(l&&this===a?D:this,e)}}),c({target:R,stat:!0,forced:$},{all:function(e){var t=this,n=U(t),o=n.resolve,r=n.reject,a=S((function(){var n=b(t.resolve),a=[],i=0,c=1;V(e,(function(e){var l=i++,d=!1;a.push(undefined),c++,n.call(t,e).then((function(e){d||(d=!0,a[l]=e,--c||o(a))}),r)})),--c||o(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=U(t),o=n.reject,r=S((function(){var r=b(t.resolve);V(e,(function(e){r.call(t,e).then(n.resolve,o)}))}));return r.error&&o(r.value),n.promise}})},function(e,t,n){"use strict";var o=n(5);e.exports=function(e,t){var n=o.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var o=n(2),r=n(40),a=n(149),i=n(4),c=n(37),l=n(47),d=n(152),u=n(24);o({target:"Promise",proto:!0,real:!0,forced:!!a&&i((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=l(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return d(t,e()).then((function(){return n}))}:e,n?function(n){return d(t,e()).then((function(){throw n}))}:e)}}),r||"function"!=typeof a||a.prototype["finally"]||u(a.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var o=n(2),r=n(37),a=n(32),i=n(8),c=n(4),l=r("Reflect","apply"),d=Function.apply;o({target:"Reflect",stat:!0,forced:!c((function(){l((function(){}))}))},{apply:function(e,t,n){return a(e),i(n),l?l(e,t,n):d.call(e,t,n)}})},function(e,t,n){"use strict";var o=n(2),r=n(37),a=n(32),i=n(8),c=n(6),l=n(44),d=n(142),u=n(4),s=r("Reflect","construct"),p=u((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),m=!u((function(){s((function(){}))})),f=p||m;o({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){a(e),i(t);var n=arguments.length<3?e:a(arguments[2]);if(m&&!p)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(d.apply(e,o))}var r=n.prototype,u=l(c(r)?r:Object.prototype),f=Function.apply.call(e,u,t);return c(f)?f:u}})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(8),i=n(34),c=n(13);o({target:"Reflect",stat:!0,forced:n(4)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!r},{defineProperty:function(e,t,n){a(e);var o=i(t,!0);a(n);try{return c.f(e,o,n),!0}catch(r){return!1}}})},function(e,t,n){"use strict";var o=n(2),r=n(8),a=n(22).f;o({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=a(r(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var o=n(2),r=n(6),a=n(8),i=n(16),c=n(22),l=n(36);o({target:"Reflect",stat:!0},{get:function d(e,t){var n,o,u=arguments.length<3?e:arguments[2];return a(e)===u?e[t]:(n=c.f(e,t))?i(n,"value")?n.value:n.get===undefined?undefined:n.get.call(u):r(o=l(e))?d(o,t,u):void 0}})},function(e,t,n){"use strict";var o=n(2),r=n(7),a=n(8),i=n(22);o({target:"Reflect",stat:!0,sham:!r},{getOwnPropertyDescriptor:function(e,t){return i.f(a(e),t)}})},function(e,t,n){"use strict";var o=n(2),r=n(8),a=n(36);o({target:"Reflect",stat:!0,sham:!n(104)},{getPrototypeOf:function(e){return a(r(e))}})},function(e,t,n){"use strict";n(2)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var o=n(2),r=n(8),a=Object.isExtensible;o({target:"Reflect",stat:!0},{isExtensible:function(e){return r(e),!a||a(e)}})},function(e,t,n){"use strict";n(2)({target:"Reflect",stat:!0},{ownKeys:n(94)})},function(e,t,n){"use strict";var o=n(2),r=n(37),a=n(8);o({target:"Reflect",stat:!0,sham:!n(69)},{preventExtensions:function(e){a(e);try{var t=r("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(2),r=n(8),a=n(6),i=n(16),c=n(4),l=n(13),d=n(22),u=n(36),s=n(48);o({target:"Reflect",stat:!0,forced:c((function(){var e=l.f({},"a",{configurable:!0});return!1!==Reflect.set(u(e),"a",1,e)}))},{set:function p(e,t,n){var o,c,m=arguments.length<4?e:arguments[3],f=d.f(r(e),t);if(!f){if(a(c=u(e)))return p(c,t,n,m);f=s(0)}if(i(f,"value")){if(!1===f.writable||!a(m))return!1;if(o=d.f(m,t)){if(o.get||o.set||!1===o.writable)return!1;o.value=n,l.f(m,t,o)}else l.f(m,t,s(0,n));return!0}return f.set!==undefined&&(f.set.call(m,n),!0)}})},function(e,t,n){"use strict";var o=n(2),r=n(8),a=n(139),i=n(52);i&&o({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){r(e),a(t);try{return i(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(7),r=n(5),a=n(63),i=n(80),c=n(13).f,l=n(49).f,d=n(110),u=n(84),s=n(111),p=n(24),m=n(4),f=n(35).set,h=n(55),C=n(12)("match"),b=r.RegExp,g=b.prototype,N=/a/g,v=/a/g,V=new b(N)!==N,y=s.UNSUPPORTED_Y;if(o&&a("RegExp",!V||y||m((function(){return v[C]=!1,b(N)!=N||b(v)==v||"/a/i"!=b(N,"i")})))){for(var _=function(e,t){var n,o=this instanceof _,r=d(e),a=t===undefined;if(!o&&r&&e.constructor===_&&a)return e;V?r&&!a&&(e=e.source):e instanceof _&&(a&&(t=u.call(e)),e=e.source),y&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=i(V?new b(e,t):b(e,t),o?this:g,_);return y&&n&&f(c,{sticky:n}),c},k=function(e){e in _||c(_,e,{configurable:!0,get:function(){return b[e]},set:function(t){b[e]=t}})},x=l(b),L=0;x.length>L;)k(x[L++]);g.constructor=_,_.prototype=g,p(r,"RegExp",_)}h("RegExp")},function(e,t,n){"use strict";var o=n(7),r=n(13),a=n(84),i=n(111).UNSUPPORTED_Y;o&&("g"!=/./g.flags||i)&&r.f(RegExp.prototype,"flags",{configurable:!0,get:a})},function(e,t,n){"use strict";var o=n(24),r=n(8),a=n(4),i=n(84),c=RegExp.prototype,l=c.toString,d=a((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),u="toString"!=l.name;(d||u)&&o(RegExp.prototype,"toString",(function(){var e=r(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?i.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var o=n(79),r=n(143);e.exports=o("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(2),r=n(112).codeAt;o({target:"String",proto:!0},{codePointAt:function(e){return r(this,e)}})},function(e,t,n){"use strict";var o,r=n(2),a=n(22).f,i=n(11),c=n(113),l=n(23),d=n(114),u=n(40),s="".endsWith,p=Math.min,m=d("endsWith");r({target:"String",proto:!0,forced:!!(u||m||(o=a(String.prototype,"endsWith"),!o||o.writable))&&!m},{endsWith:function(e){var t=String(l(this));c(e);var n=arguments.length>1?arguments[1]:undefined,o=i(t.length),r=n===undefined?o:p(i(n),o),a=String(e);return s?s.call(t,a,r):t.slice(r-a.length,r)===a}})},function(e,t,n){"use strict";var o=n(2),r=n(43),a=String.fromCharCode,i=String.fromCodePoint;o({target:"String",stat:!0,forced:!!i&&1!=i.length},{fromCodePoint:function(e){for(var t,n=[],o=arguments.length,i=0;o>i;){if(t=+arguments[i++],r(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var o=n(2),r=n(113),a=n(23);o({target:"String",proto:!0,forced:!n(114)("includes")},{includes:function(e){return!!~String(a(this)).indexOf(r(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(112).charAt,r=n(35),a=n(103),i=r.set,c=r.getterFor("String Iterator");a(String,"String",(function(e){i(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,r=t.index;return r>=n.length?{value:undefined,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var o=n(86),r=n(8),a=n(11),i=n(23),c=n(115),l=n(87);o("match",1,(function(e,t,n){return[function(t){var n=i(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var i=r(e),d=String(this);if(!i.global)return l(i,d);var u=i.unicode;i.lastIndex=0;for(var s,p=[],m=0;null!==(s=l(i,d));){var f=String(s[0]);p[m]=f,""===f&&(i.lastIndex=c(d,a(i.lastIndex),u)),m++}return 0===m?null:p}]}))},function(e,t,n){"use strict";var o=n(2),r=n(106).end;o({target:"String",proto:!0,forced:n(155)},{padEnd:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(106).start;o({target:"String",proto:!0,forced:n(155)},{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(2),r=n(26),a=n(11);o({target:"String",stat:!0},{raw:function(e){for(var t=r(e.raw),n=a(t.length),o=arguments.length,i=[],c=0;n>c;)i.push(String(t[c++])),c]*>)/g,h=/\$([$&'`]|\d\d?)/g;o("replace",2,(function(e,t,n,o){var C=o.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,b=o.REPLACE_KEEPS_$0,g=C?"$":"$0";return[function(n,o){var r=l(this),a=n==undefined?undefined:n[e];return a!==undefined?a.call(n,r,o):t.call(String(r),n,o)},function(e,o){if(!C&&b||"string"==typeof o&&-1===o.indexOf(g)){var a=n(t,e,this,o);if(a.done)return a.value}var l=r(e),m=String(this),f="function"==typeof o;f||(o=String(o));var h=l.global;if(h){var v=l.unicode;l.lastIndex=0}for(var V=[];;){var y=u(l,m);if(null===y)break;if(V.push(y),!h)break;""===String(y[0])&&(l.lastIndex=d(m,i(l.lastIndex),v))}for(var _,k="",x=0,L=0;L=x&&(k+=m.slice(x,w)+P,x=w+B.length)}return k+m.slice(x)}];function N(e,n,o,r,i,c){var l=o+e.length,d=r.length,u=h;return i!==undefined&&(i=a(i),u=f),t.call(c,u,(function(t,a){var c;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,o);case"'":return n.slice(l);case"<":c=i[a.slice(1,-1)];break;default:var u=+a;if(0===u)return t;if(u>d){var s=m(u/10);return 0===s?t:s<=d?r[s-1]===undefined?a.charAt(1):r[s-1]+a.charAt(1):t}c=r[u-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var o=n(86),r=n(8),a=n(23),i=n(148),c=n(87);o("search",1,(function(e,t,n){return[function(t){var n=a(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var a=r(e),l=String(this),d=a.lastIndex;i(d,0)||(a.lastIndex=0);var u=c(a,l);return i(a.lastIndex,d)||(a.lastIndex=d),null===u?-1:u.index}]}))},function(e,t,n){"use strict";var o=n(86),r=n(110),a=n(8),i=n(23),c=n(47),l=n(115),d=n(11),u=n(87),s=n(85),p=n(4),m=[].push,f=Math.min,h=!p((function(){return!RegExp(4294967295,"y")}));o("split",2,(function(e,t,n){var o;return o="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var o=String(i(this)),a=n===undefined?4294967295:n>>>0;if(0===a)return[];if(e===undefined)return[o];if(!r(e))return t.call(o,e,a);for(var c,l,d,u=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,h=new RegExp(e.source,p+"g");(c=s.call(h,o))&&!((l=h.lastIndex)>f&&(u.push(o.slice(f,c.index)),c.length>1&&c.index=a));)h.lastIndex===c.index&&h.lastIndex++;return f===o.length?!d&&h.test("")||u.push(""):u.push(o.slice(f)),u.length>a?u.slice(0,a):u}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=i(this),a=t==undefined?undefined:t[e];return a!==undefined?a.call(t,r,n):o.call(String(r),t,n)},function(e,r){var i=n(o,e,this,r,o!==t);if(i.done)return i.value;var s=a(e),p=String(this),m=c(s,RegExp),C=s.unicode,b=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),g=new m(h?s:"^(?:"+s.source+")",b),N=r===undefined?4294967295:r>>>0;if(0===N)return[];if(0===p.length)return null===u(g,p)?[p]:[];for(var v=0,V=0,y=[];V1?arguments[1]:undefined,t.length)),o=String(e);return s?s.call(t,o,n):t.slice(n,n+o.length)===o}})},function(e,t,n){"use strict";var o=n(2),r=n(57).trim;o({target:"String",proto:!0,forced:n(116)("trim")},{trim:function(){return r(this)}})},function(e,t,n){"use strict";var o=n(2),r=n(57).end,a=n(116)("trimEnd"),i=a?function(){return r(this)}:"".trimEnd;o({target:"String",proto:!0,forced:a},{trimEnd:i,trimRight:i})},function(e,t,n){"use strict";var o=n(2),r=n(57).start,a=n(116)("trimStart"),i=a?function(){return r(this)}:"".trimStart;o({target:"String",proto:!0,forced:a},{trimStart:i,trimLeft:i})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("anchor")},{anchor:function(e){return r(this,"a","name",e)}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("big")},{big:function(){return r(this,"big","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("blink")},{blink:function(){return r(this,"blink","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("bold")},{bold:function(){return r(this,"b","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("fixed")},{fixed:function(){return r(this,"tt","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontcolor")},{fontcolor:function(e){return r(this,"font","color",e)}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontsize")},{fontsize:function(e){return r(this,"font","size",e)}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("italics")},{italics:function(){return r(this,"i","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("link")},{link:function(e){return r(this,"a","href",e)}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("small")},{small:function(){return r(this,"small","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("strike")},{strike:function(){return r(this,"strike","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("sub")},{sub:function(){return r(this,"sub","","")}})},function(e,t,n){"use strict";var o=n(2),r=n(28);o({target:"String",proto:!0,forced:n(29)("sup")},{sup:function(){return r(this,"sup","","")}})},function(e,t,n){"use strict";n(42)("Float32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(31);e.exports=function(e){var t=o(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(42)("Float64",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Int8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Int16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Int32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}),!0)},function(e,t,n){"use strict";n(42)("Uint16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(42)("Uint32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(10),r=n(134),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(e,t){return r.call(a(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(20).every,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("every",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(99),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("fill",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(10),r=n(20).filter,a=n(47),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("filter",(function(e){for(var t=r(i(this),e,arguments.length>1?arguments[1]:undefined),n=a(this,this.constructor),o=0,l=t.length,d=new(c(n))(l);l>o;)d[o]=t[o++];return d}))},function(e,t,n){"use strict";var o=n(10),r=n(20).find,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("find",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(20).findIndex,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("findIndex",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(20).forEach,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("forEach",(function(e){r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(117);(0,n(10).exportTypedArrayStaticMethod)("from",n(157),o)},function(e,t,n){"use strict";var o=n(10),r=n(62).includes,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("includes",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(62).indexOf,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("indexOf",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(5),r=n(10),a=n(137),i=n(12)("iterator"),c=o.Uint8Array,l=a.values,d=a.keys,u=a.entries,s=r.aTypedArray,p=r.exportTypedArrayMethod,m=c&&c.prototype[i],f=!!m&&("values"==m.name||m.name==undefined),h=function(){return l.call(s(this))};p("entries",(function(){return u.call(s(this))})),p("keys",(function(){return d.call(s(this))})),p("values",h,!f),p(i,h,!f)},function(e,t,n){"use strict";var o=n(10),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].join;a("join",(function(e){return i.apply(r(this),arguments)}))},function(e,t,n){"use strict";var o=n(10),r=n(140),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("lastIndexOf",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(10),r=n(20).map,a=n(47),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("map",(function(e){return r(i(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(a(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var o=n(10),r=n(117),a=o.aTypedArrayConstructor;(0,o.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(a(this))(t);t>e;)n[e]=arguments[e++];return n}),r)},function(e,t,n){"use strict";var o=n(10),r=n(77).left,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduce",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=n(77).right,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduceRight",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=Math.floor;a("reverse",(function(){for(var e,t=r(this).length,n=i(t/2),o=0;o1?arguments[1]:undefined,1),n=this.length,o=i(e),c=r(o.length),d=0;if(c+t>n)throw RangeError("Wrong length");for(;da;)u[a]=n[a++];return u}),a((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var o=n(10),r=n(20).some,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("some",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(10),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].sort;a("sort",(function(e){return i.call(r(this),e)}))},function(e,t,n){"use strict";var o=n(10),r=n(11),a=n(43),i=n(47),c=o.aTypedArray;(0,o.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),o=n.length,l=a(e,o);return new(i(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,r((t===undefined?o:a(t,o))-l))}))},function(e,t,n){"use strict";var o=n(5),r=n(10),a=n(4),i=o.Int8Array,c=r.aTypedArray,l=r.exportTypedArrayMethod,d=[].toLocaleString,u=[].slice,s=!!i&&a((function(){d.call(new i(1))}));l("toLocaleString",(function(){return d.apply(s?u.call(c(this)):c(this),arguments)}),a((function(){return[1,2].toLocaleString()!=new i([1,2]).toLocaleString()}))||!a((function(){i.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var o=n(10).exportTypedArrayMethod,r=n(4),a=n(5).Uint8Array,i=a&&a.prototype||{},c=[].toString,l=[].join;r((function(){c.call({})}))&&(c=function(){return l.call(this)});var d=i.toString!=c;o("toString",c,d)},function(e,t,n){"use strict";var o,r=n(5),a=n(68),i=n(53),c=n(79),l=n(158),d=n(6),u=n(35).enforce,s=n(125),p=!r.ActiveXObject&&"ActiveXObject"in r,m=Object.isExtensible,f=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},h=e.exports=c("WeakMap",f,l);if(s&&p){o=l.getConstructor(f,"WeakMap",!0),i.REQUIRED=!0;var C=h.prototype,b=C["delete"],g=C.has,N=C.get,v=C.set;a(C,{"delete":function(e){if(d(e)&&!m(e)){var t=u(this);return t.frozen||(t.frozen=new o),b.call(this,e)||t.frozen["delete"](e)}return b.call(this,e)},has:function(e){if(d(e)&&!m(e)){var t=u(this);return t.frozen||(t.frozen=new o),g.call(this,e)||t.frozen.has(e)}return g.call(this,e)},get:function(e){if(d(e)&&!m(e)){var t=u(this);return t.frozen||(t.frozen=new o),g.call(this,e)?N.call(this,e):t.frozen.get(e)}return N.call(this,e)},set:function(e,t){if(d(e)&&!m(e)){var n=u(this);n.frozen||(n.frozen=new o),g.call(this,e)?v.call(this,e,t):n.frozen.set(e,t)}else v.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(79)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(158))},function(e,t,n){"use strict";var o=n(2),r=n(5),a=n(109);o({global:!0,bind:!0,enumerable:!0,forced:!r.setImmediate||!r.clearImmediate},{setImmediate:a.set,clearImmediate:a.clear})},function(e,t,n){"use strict";var o=n(2),r=n(5),a=n(151),i=n(33),c=r.process,l="process"==i(c);o({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=l&&c.domain;a(t?t.bind(e):e)}})},function(e,t,n){"use strict";var o=n(2),r=n(5),a=n(74),i=[].slice,c=function(e){return function(t,n){var o=arguments.length>2,r=o?i.call(arguments,2):undefined;return e(o?function(){("function"==typeof t?t:Function(t)).apply(this,r)}:t,n)}};o({global:!0,bind:!0,forced:/MSIE .\./.test(a)},{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=we,t._HI=O,t._M=Se,t._MCCC=Pe,t._ME=Te,t._MFCC=Ee,t._MP=Le,t._MR=ge,t.__render=De,t.createComponentVNode=function(e,t,n,o,r){var i=new S(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),o,function(e,t,n){var o=(32768&e?t.render:t).defaultProps;if(a(o))return n;if(a(n))return u(o,null);return B(n,o)}(e,t,n),function(e,t,n){if(4&e)return n;var o=(32768&e?t.render:t).defaultHooks;if(a(o))return n;if(a(n))return o;return B(n,o)}(e,t,r),t);k.createVNode&&k.createVNode(i);return i},t.createFragment=A,t.createPortal=function(e,t){var n=O(e);return I(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,o,r){e||(e=t),je(n,e,o,r)}},t.createTextVNode=T,t.createVNode=I,t.directClone=P,t.findDOMfromVNode=N,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&a(e.children)&&M(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?u(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=je,t.rerender=We,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var o=Array.isArray;function r(e){var t=typeof e;return"string"===t||"number"===t}function a(e){return null==e}function i(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function l(e){return"string"==typeof e}function d(e){return null===e}function u(e,t){var n={};if(e)for(var o in e)n[o]=e[o];if(t)for(var r in t)n[r]=t[r];return n}function s(e){return!d(e)&&"object"==typeof e}var p={};t.EMPTY_OBJ=p;function m(e){return e.substr(2).toLowerCase()}function f(e,t){e.appendChild(t)}function h(e,t,n){d(n)?f(e,t):e.insertBefore(t,n)}function C(e,t){e.removeChild(t)}function b(e){for(var t=0;t0,f=d(p),h=l(p)&&"$"===p[0];m||f||h?(n=n||t.slice(0,u),(m||h)&&(s=P(s)),(f||h)&&(s.key="$"+u),n.push(s)):n&&n.push(s),s.flags|=65536}}a=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=P(t)),a=2;return e.children=n,e.childFlags=a,e}function O(e){return i(e)||r(e)?T(e,null):o(e)?A(e,0,null):16384&e.flags?P(e):e}var F="http://www.w3.org/1999/xlink",D="http://www.w3.org/XML/1998/namespace",j={"xlink:actuate":F,"xlink:arcrole":F,"xlink:href":F,"xlink:role":F,"xlink:show":F,"xlink:title":F,"xlink:type":F,"xml:base":D,"xml:lang":D,"xml:space":D};function z(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var G=z(0),H=z(null),U=z(!0);function K(e,t){var n=t.$EV;return n||(n=t.$EV=z(null)),n[e]||1==++G[e]&&(H[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?Y(t,!0,e,X(t)):t.stopPropagation()}}(e):function(e){return function(t){Y(t,!1,e,X(t))}}(e);return document.addEventListener(m(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--G[e]&&(document.removeEventListener(m(e),H[e]),H[e]=null),n[e]=null)}function Y(e,t,n,o){var r=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&r.disabled)return;var a=r.$EV;if(a){var i=a[n];if(i&&(o.dom=r,i.event?i.event(i.data,e):i(e),e.cancelBubble))return}r=r.parentNode}while(!d(r))}function q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function $(){return this.defaultPrevented}function Q(){return this.cancelBubble}function X(e){var t={dom:document};return e.isDefaultPrevented=$,e.isPropagationStopped=Q,e.stopPropagation=q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function J(e,t,n){if(e[t]){var o=e[t];o.event?o.event(o.data,n):o(n)}else{var r=t.toLowerCase();e[r]&&e[r](n)}}function Z(e,t){var n=function(n){var o=this.$V;if(o){var r=o.props||p,a=o.dom;if(l(e))J(r,e,n);else for(var i=0;i-1&&t.options[i]&&(c=t.options[i].value),n&&a(c)&&(c=e.defaultValue),ie(o,c)}}var de,ue,se=Z("onInput",me),pe=Z("onChange");function me(e,t,n){var o=e.value,r=t.value;if(a(o)){if(n){var i=e.defaultValue;a(i)||i===r||(t.defaultValue=i,t.value=i)}}else r!==o&&(t.defaultValue=o,t.value=o)}function fe(e,t,n,o,r,a){64&e?ae(o,n):256&e?le(o,n,r,t):128&e&&me(o,n,r),a&&(n.$V=t)}function he(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",oe),ee(e,"click",re)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ce)}(t):128&e&&function(e,t){ee(e,"input",se),t.onChange&&ee(e,"change",pe)}(t,n)}function Ce(e){return e.type&&te(e.type)?!a(e.checked):!a(e.value)}function be(e){e&&!w(e,null)&&e.current&&(e.current=null)}function ge(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){w(e,t)||void 0===e.current||(e.current=t)}))}function Ne(e,t){ve(e),v(e,t)}function ve(e){var t,n=e.flags,o=e.children;if(481&n){t=e.ref;var r=e.props;be(t);var i=e.childFlags;if(!d(r))for(var l=Object.keys(r),u=0,s=l.length;u0;for(var c in i&&(a=Ce(n))&&he(t,o,n),n)xe(c,null,n[c],o,r,a,null);i&&fe(t,e,o,n,!0,a)}function Be(e,t,n){var o=O(e.render(t,e.state,n)),r=n;return c(e.getChildContext)&&(r=u(n,e.getChildContext())),e.$CX=r,o}function we(e,t,n,o,r,a){var i=new t(n,o),l=i.$N=Boolean(t.getDerivedStateFromProps||i.getSnapshotBeforeUpdate);if(i.$SVG=r,i.$L=a,e.children=i,i.$BS=!1,i.context=o,i.props===p&&(i.props=n),l)i.state=y(i,n,i.state);else if(c(i.componentWillMount)){i.$BR=!0,i.componentWillMount();var u=i.$PS;if(!d(u)){var s=i.state;if(d(s))i.state=u;else for(var m in u)s[m]=u[m];i.$PS=null}i.$BR=!1}return i.$LI=Be(i,n,o),i}function Se(e,t,n,o,r,a){var i=e.flags|=16384;481&i?Te(e,t,n,o,r,a):4&i?function(e,t,n,o,r,a){var i=we(e,e.type,e.props||p,n,o,a);Se(i.$LI,t,i.$CX,o,r,a),Pe(e.ref,i,a)}(e,t,n,o,r,a):8&i?(!function(e,t,n,o,r,a){Se(e.children=O(function(e,t){return 32768&e.flags?e.type.render(e.props||p,e.ref,t):e.type(e.props||p,t)}(e,n)),t,n,o,r,a)}(e,t,n,o,r,a),Ee(e,a)):512&i||16&i?Ie(e,t,r):8192&i?function(e,t,n,o,r,a){var i=e.children,c=e.childFlags;12&c&&0===i.length&&(c=e.childFlags=2,i=e.children=E());2===c?Se(i,n,r,o,r,a):Ae(i,n,t,o,r,a)}(e,n,t,o,r,a):1024&i&&function(e,t,n,o,r){Se(e.children,e.ref,t,!1,null,r);var a=E();Ie(a,n,o),e.dom=a.dom}(e,n,t,r,a)}function Ie(e,t,n){var o=e.dom=document.createTextNode(e.children);d(t)||h(t,o,n)}function Te(e,t,n,o,r,i){var c=e.flags,l=e.props,u=e.className,s=e.children,p=e.childFlags,m=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,o=o||(32&c)>0);if(a(u)||""===u||(o?m.setAttribute("class",u):m.className=u),16===p)x(m,s);else if(1!==p){var f=o&&"foreignObject"!==e.type;2===p?(16384&s.flags&&(e.children=s=P(s)),Se(s,m,n,f,null,i)):8!==p&&4!==p||Ae(s,m,n,f,null,i)}d(t)||h(t,m,r),d(l)||Le(e,c,l,m,o),ge(e.ref,m,i)}function Ae(e,t,n,o,r,a){for(var i=0;i0,d!==u){var f=d||p;if((c=u||p)!==p)for(var h in(s=(448&r)>0)&&(m=Ce(c)),c){var C=f[h],b=c[h];C!==b&&xe(h,C,b,l,o,m,e)}if(f!==p)for(var g in f)a(c[g])&&!a(f[g])&&xe(g,f[g],null,l,o,m,e)}var N=t.children,v=t.className;e.className!==v&&(a(v)?l.removeAttribute("class"):o?l.setAttribute("class",v):l.className=v);4096&r?function(e,t){e.textContent!==t&&(e.textContent=t)}(l,N):Me(e.childFlags,t.childFlags,e.children,N,l,n,o&&"foreignObject"!==t.type,null,e,i);s&&fe(r,t,l,c,!1,m);var V=t.ref,y=e.ref;y!==V&&(be(y),ge(V,l,i))}(e,t,o,r,m,s):4&m?function(e,t,n,o,r,a,i){var l=t.children=e.children;if(d(l))return;l.$L=i;var s=t.props||p,m=t.ref,f=e.ref,h=l.state;if(!l.$N){if(c(l.componentWillReceiveProps)){if(l.$BR=!0,l.componentWillReceiveProps(s,o),l.$UN)return;l.$BR=!1}d(l.$PS)||(h=u(h,l.$PS),l.$PS=null)}Oe(l,h,s,n,o,r,!1,a,i),f!==m&&(be(f),ge(m,l,i))}(e,t,n,o,r,l,s):8&m?function(e,t,n,o,r,i,l){var d=!0,u=t.props||p,s=t.ref,m=e.props,f=!a(s),h=e.children;f&&c(s.onComponentShouldUpdate)&&(d=s.onComponentShouldUpdate(m,u));if(!1!==d){f&&c(s.onComponentWillUpdate)&&s.onComponentWillUpdate(m,u);var C=t.type,b=O(32768&t.flags?C.render(u,s,o):C(u,o));Re(h,b,n,o,r,i,l),t.children=b,f&&c(s.onComponentDidUpdate)&&s.onComponentDidUpdate(m,u)}else t.children=h}(e,t,n,o,r,l,s):16&m?function(e,t){var n=t.children,o=t.dom=e.dom;n!==e.children&&(o.nodeValue=n)}(e,t):512&m?t.dom=e.dom:8192&m?function(e,t,n,o,r,a){var i=e.children,c=t.children,l=e.childFlags,d=t.childFlags,u=null;12&d&&0===c.length&&(d=t.childFlags=2,c=t.children=E());var s=0!=(2&d);if(12&l){var p=i.length;(8&l&&8&d||s||!s&&c.length>p)&&(u=N(i[p-1],!1).nextSibling)}Me(l,d,i,c,n,o,r,u,e,a)}(e,t,n,o,r,s):function(e,t,n,o){var r=e.ref,a=t.ref,c=t.children;if(Me(e.childFlags,t.childFlags,e.children,c,r,n,!1,null,e,o),t.dom=e.dom,r!==a&&!i(c)){var l=c.dom;C(r,l),f(a,l)}}(e,t,o,s)}function Me(e,t,n,o,r,a,i,c,l,d){switch(e){case 2:switch(t){case 2:Re(n,o,r,a,i,c,d);break;case 1:Ne(n,r);break;case 16:ve(n),x(r,o);break;default:!function(e,t,n,o,r,a){ve(e),Ae(t,n,o,r,N(e,!0),a),v(e,n)}(n,o,r,a,i,d)}break;case 1:switch(t){case 2:Se(o,r,a,i,c,d);break;case 1:break;case 16:x(r,o);break;default:Ae(o,r,a,i,c,d)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:x(n,t))}(n,o,r);break;case 2:ye(r),Se(o,r,a,i,c,d);break;case 1:ye(r);break;default:ye(r),Ae(o,r,a,i,c,d)}break;default:switch(t){case 16:Ve(n),x(r,o);break;case 2:_e(r,l,n),Se(o,r,a,i,c,d);break;case 1:_e(r,l,n);break;default:var u=0|n.length,s=0|o.length;0===u?s>0&&Ae(o,r,a,i,c,d):0===s?_e(r,l,n):8===t&&8===e?function(e,t,n,o,r,a,i,c,l,d){var u,s,p=a-1,m=i-1,f=0,h=e[f],C=t[f];e:{for(;h.key===C.key;){if(16384&C.flags&&(t[f]=C=P(C)),Re(h,C,n,o,r,c,d),e[f]=C,++f>p||f>m)break e;h=e[f],C=t[f]}for(h=e[p],C=t[m];h.key===C.key;){if(16384&C.flags&&(t[m]=C=P(C)),Re(h,C,n,o,r,c,d),e[p]=C,p--,m--,f>p||f>m)break e;h=e[p],C=t[m]}}if(f>p){if(f<=m)for(s=(u=m+1)m)for(;f<=p;)Ne(e[f++],n);else!function(e,t,n,o,r,a,i,c,l,d,u,s,p){var m,f,h,C=0,b=c,g=c,v=a-c+1,y=i-c+1,_=new Int32Array(y+1),k=v===o,x=!1,L=0,B=0;if(r<4||(v|y)<32)for(C=b;C<=a;++C)if(m=e[C],Bc?x=!0:L=c,16384&f.flags&&(t[c]=f=P(f)),Re(m,f,l,n,d,u,p),++B;break}!k&&c>i&&Ne(m,l)}else k||Ne(m,l);else{var w={};for(C=g;C<=i;++C)w[t[C].key]=C;for(C=b;C<=a;++C)if(m=e[C],Bb;)Ne(e[b++],l);_[c-g]=C+1,L>c?x=!0:L=c,16384&(f=t[c]).flags&&(t[c]=f=P(f)),Re(m,f,l,n,d,u,p),++B}else k||Ne(m,l);else k||Ne(m,l)}if(k)_e(l,s,e),Ae(t,l,n,d,u,p);else if(x){var S=function(e){var t=0,n=0,o=0,r=0,a=0,i=0,c=0,l=e.length;l>Fe&&(Fe=l,de=new Int32Array(l),ue=new Int32Array(l));for(;n>1]]0&&(ue[n]=de[a-1]),de[a]=n)}a=r+1;var d=new Int32Array(a);i=de[a-1];for(;a-- >0;)d[a]=i,i=ue[i],de[a]=0;return d}(_);for(c=S.length-1,C=y-1;C>=0;C--)0===_[C]?(16384&(f=t[L=C+g]).flags&&(t[L]=f=P(f)),Se(f,l,n,d,(h=L+1)=0;C--)0===_[C]&&(16384&(f=t[L=C+g]).flags&&(t[L]=f=P(f)),Se(f,l,n,d,(h=L+1)i?i:a,p=0;pi)for(p=s;p=0;--r){var a=this.tryEntries[r],i=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--o){var r=this.tryEntries[o];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),V(n),d}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;V(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:_(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},e}(e.exports);try{regeneratorRuntime=o}catch(r){Function("r","regeneratorRuntime = r")(o)}},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){"use strict";(function(e){ /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ -var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,o,r){var a,i=n.document,c=i.createElement("link");if(t)a=t;else{var l=(i.body||i.getElementsByTagName("head")[0]).childNodes;a=l[l.length-1]}var u=i.styleSheets;if(r)for(var d in r)r.hasOwnProperty(d)&&c.setAttribute(d,r[d]);c.rel="stylesheet",c.href=e,c.media="only x",function m(e){if(i.body)return e();setTimeout((function(){m(e)}))}((function(){a.parentNode.insertBefore(c,t?a:a.nextSibling)}));var s=function f(e){for(var t=c.href,n=u.length;n--;)if(u[n].href===t)return e();setTimeout((function(){f(e)}))};function p(){c.addEventListener&&c.removeEventListener("load",p),c.media=o||"all"}return c.addEventListener&&c.addEventListener("load",p),c.onloadcssdefined=s,s(p),c}}).call(this,n(120))},function(e,t,n){"use strict";t.__esModule=!0,t.createStore=void 0;var o=n(69),r=n(393),a=n(3),i=n(114),c=n(115);(0,n(41).createLogger)("store");t.createStore=function(){var e=(0,o.flow)([function(e,t){return void 0===e&&(e={}),e},a.backendReducer,i.toastReducer,c.hotKeyReducer]),t=[c.hotKeyMiddleware];return(0,r.createStore)(e,r.applyMiddleware.apply(void 0,t))}},function(e,t,n){"use strict";t.__esModule=!0,t.applyMiddleware=t.createStore=void 0;var o=n(69);t.createStore=function r(e,t){if(t)return t(r)(e);var n,o=[],a=function(t){n=e(n,t),o.forEach((function(e){return e()}))};return a({type:"@@INIT"}),{dispatch:a,subscribe:function(e){o.push(e)},getState:function(){return n}}};t.applyMiddleware=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),i=1;i1?t-1:0),o=1;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(10),a=n(20);var i=function(e){var t=e.color,n=e.content,i=e.className,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["color","content","className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["ColorBox",i]),color:n?null:"transparent",backgroundColor:t,content:n||"."},c)))};t.ColorBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Collapsible=void 0;var o=n(0),r=n(20),a=n(116);var i=function(e){var t,n;function i(t){var n;n=e.call(this,t)||this;var o=t.open;return n.state={open:o||!1},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.props,n=this.state.open,i=t.children,c=t.color,l=void 0===c?"default":c,u=t.title,d=t.buttons,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createComponentVNode)(2,r.Box,{mb:1,children:[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:u}))),2),d&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",d,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:i})]})},i}(o.Component);t.Collapsible=i},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var o=n(0),r=n(20);t.Dimmer=function(e){var t=e.style,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Box,Object.assign({style:Object.assign({position:"absolute",top:0,bottom:0,left:0,right:0,"background-color":"rgba(0, 0, 0, 0.75)","z-index":1},t)},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(10),a=n(20),i=n(87);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},u.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},u.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},u.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(n){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},u.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,u=t.over,d=t.width,s=(t.onClick,t.selected,c(t,["color","over","width","onClick","selected"])),p=s.className,m=c(s,["className"]),f=u?!this.state.open:this.state.open,h=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)(["Dropdown__menu",u&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:d,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,p])},m,{onClick:function(t){e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,i.Icon,{name:f?"chevron-up":"chevron-down"}),2)]}))),h],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var o=n(0),r=n(10),a=n(20);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.className,n=e.direction,o=e.wrap,a=e.align,c=e.justify,l=e.spacing,u=void 0===l?0:l,d=i(e,["className","direction","wrap","align","justify","spacing"]);return Object.assign({className:(0,r.classes)(["Flex",u>0&&"Flex--spacing--"+u,t]),style:Object.assign({},d.style,{"flex-direction":n,"flex-wrap":o,"align-items":a,"justify-content":c})},d)};t.computeFlexProps=c;var l=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.grow,o=e.order,a=e.align,c=i(e,["className","grow","order","align"]);return Object.assign({className:(0,r.classes)(["Flex__item",t]),style:Object.assign({},c.style,{"flex-grow":n,order:o,"align-self":a})},c)};t.computeFlexItemProps=u;var d=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},u(e))))};t.FlexItem=d,d.defaultHooks=r.pureComponentHooks,l.Item=d},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(10),a=n(20);var i=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",t])},n)))};t.NoticeBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var o=n(0),r=n(18),a=n(10),i=n(15),c=n(159),l=n(20);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var a=t.value;return n.inputRef=(0,o.createRef)(),n.state={value:a,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,o=t.dragging,r=t.value,a=n.props.onDrag;o&&a&&a(e,r)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,o=t.minValue,a=t.maxValue,i=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),l=n.origin-e.screenY;if(t.dragging){var u=Number.isFinite(o)?o%i:0;n.internalValue=(0,r.clamp)(n.internalValue+l*i/c,o-i,a+i),n.value=(0,r.clamp)(n.internalValue-n.internalValue%i+u,o,a),n.origin=e.screenY}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,o=t.onChange,r=t.onDrag,a=n.state,i=a.dragging,c=a.value,l=a.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!i,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),i)n.suppressFlicker(),o&&o(e,c),r&&r(e,c);else if(n.inputRef){var u=n.inputRef.current;u.value=l;try{u.focus(),u.select()}catch(d){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,d=t.value,s=t.suppressingFlicker,p=this.props,m=p.className,f=p.fluid,h=p.animated,C=p.value,b=p.unit,g=p.minValue,N=p.maxValue,v=p.height,V=p.width,y=p.lineHeight,_=p.fontSize,k=p.format,x=p.onChange,L=p.onDrag,B=C;(n||s)&&(B=d);var w=function(e){return(0,o.createVNode)(1,"div","NumberInput__content",e+(b?" "+b:""),0,{unselectable:i.tridentVersion<=4})},S=h&&!n&&!s&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:B,format:k,children:w})||w(k?k(B):B);return(0,o.createComponentVNode)(2,l.Box,{className:(0,a.classes)(["NumberInput",f&&"NumberInput--fluid",m]),minWidth:V,minHeight:v,lineHeight:y,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,o.createVNode)(1,"div","NumberInput__barContainer",(0,o.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,r.clamp)((B-g)/(N-g)*100,0,100)+"%"}}),2),S,(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:v,"line-height":y,"font-size":_},onBlur:function(t){if(u){var n=(0,r.clamp)(t.target.value,g,N);e.setState({editing:!1,value:n}),e.suppressFlicker(),x&&x(t,n),L&&L(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,r.clamp)(t.target.value,g,N);return e.setState({editing:!1,value:n}),e.suppressFlicker(),x&&x(t,n),void(L&&L(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(o.Component);t.NumberInput=u,u.defaultHooks=a.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(0),r=n(10),a=n(18),i=function(e){var t=e.value,n=e.minValue,i=void 0===n?0:n,c=e.maxValue,l=void 0===c?1:c,u=e.ranges,d=void 0===u?{}:u,s=e.content,p=e.children,m=(t-i)/(l-i),f=s!==undefined||p!==undefined,h=e.color;if(!h)for(var C=0,b=Object.keys(d);C=N[0]&&t<=N[1]){h=g;break}}return h||(h="default"),(0,o.createVNode)(1,"div",(0,r.classes)(["ProgressBar","ProgressBar--color--"+h]),[(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,a.clamp)(m,0,1)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",[f&&s,f&&p,!f&&(0,a.toFixed)(100*m)+"%"],0)],4)};t.ProgressBar=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(10),a=n(20);var i=function(e){var t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,l=e.buttons,u=e.content,d=e.children,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","children"]),p=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),m=!(0,r.isFalsy)(u)||!(0,r.isFalsy)(d);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+c,t])},s,{children:[p&&(0,o.createVNode)(1,"div","Section__title",[(0,o.createVNode)(1,"span","Section__titleText",n,0),(0,o.createVNode)(1,"div","Section__buttons",l,0)],4),m&&(0,o.createVNode)(1,"div","Section__content",[u,d],0)]})))};t.Section=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tab=t.Tabs=void 0;var o=n(0),r=n(10),a=n(20),i=n(116);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e,n=Array.isArray(t),o=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(o>=t.length)break;r=t[o++]}else{if((o=t.next()).done)break;r=o.value}var a=r;if(!a.props||"Tab"!==a.props.__type__){var i=JSON.stringify(a,null,2);throw new Error(" only accepts children of type .This is what we received: "+i)}}},u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={activeTabKey:null},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.getActiveTab=function(){var e=this.state,t=this.props,n=(0,r.normalizeChildren)(t.children);l(n);var o=t.activeTab||e.activeTabKey,a=n.find((function(e){return(e.key||e.props.label)===o}));return a||(a=n[0],o=a&&(a.key||a.props.label)),{tabs:n,activeTab:a,activeTabKey:o}},d.render=function(){var e=this,t=this.props,n=t.className,l=t.vertical,u=t.altSelection,d=(t.children,c(t,["className","vertical","altSelection","children"])),s=this.getActiveTab(),p=s.tabs,m=s.activeTab,f=s.activeTabKey,h=null;return m&&(h=m.props.content||m.props.children),"function"==typeof h&&(h=h(f)),(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Tabs",l&&"Tabs--vertical",n])},d,{children:[(0,o.createVNode)(1,"div","Tabs__tabBox",p.map((function(t){var n=t.props,a=n.className,d=n.label,s=(n.content,n.children,n.onClick),p=n.highlight,m=c(n,["className","label","content","children","onClick","highlight"]),h=t.key||t.props.label,C=t.active||h===f,b="Button--altSelected"+(l?"--right":"--bottom");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",C&&"Tabs__tab--active",p&&!C&&"color-yellow",u&&C&&b,a]),selected:!u&&C,color:"transparent",onClick:function(n){e.setState({activeTabKey:h}),s&&s(n,t)}},m,{children:d}),h))})),0),(0,o.createVNode)(1,"div","Tabs__content",h||null,0)]})))},u}(o.Component);t.Tabs=u;var d=function(e){return null};t.Tab=d,d.defaultProps={__type__:"Tab"},u.Tab=d},function(e,t,n){"use strict";t.__esModule=!0,t.TitleBar=void 0;var o=n(0),r=n(10),a=n(22),i=n(15),c=n(37),l=n(87),u=function(e){switch(e){case c.UI_INTERACTIVE:return"good";case c.UI_UPDATE:return"average";case c.UI_DISABLED:default:return"bad"}},d=function(e){var t=e.className,n=e.title,c=e.status,d=e.fancy,s=e.onDragStart,p=e.onClose;return(0,o.createVNode)(1,"div",(0,r.classes)(["TitleBar",t]),[(0,o.createComponentVNode)(2,l.Icon,{className:"TitleBar__statusIcon",color:u(c),name:"eye"}),(0,o.createVNode)(1,"div","TitleBar__title",n===n.toLowerCase()?(0,a.toTitleCase)(n):n,0),(0,o.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return d&&s(e)}}),!!d&&(0,o.createVNode)(1,"div","TitleBar__close TitleBar__clickable",i.tridentVersion<=4?"x":"\xd7",0,{onclick:p})],0)};t.TitleBar=d,d.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=void 0;var o=n(0),r=n(17),a=n(20),i=n(10),c=n(15);var l=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),i=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],i[0]=n[1]),o!==undefined&&(a[1]=o[0],i[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,i,t)}))(e)},u=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),b=this.state.viewBox,g=l(r,b,i,c);if(g.length>0){var N=g[0],v=g[g.length-1];g.push([b[0]+h,v[1]]),g.push([b[0]+h,-h]),g.push([-h,-h]),g.push([-h,N[1]])}var V=u(g);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({position:"relative"},C,{children:function(t){return(0,o.normalizeProps)((0,o.createVNode)(1,"div",null,(0,o.createVNode)(32,"svg",null,(0,o.createVNode)(32,"polyline",null,null,1,{transform:"scale(1, -1) translate(0, -"+b[1]+")",fill:s,stroke:m,"stroke-width":h,points:V}),2,{viewBox:"0 0 "+b[0]+" "+b[1],preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"hidden"}}),2,Object.assign({},t),null,e.ref))}})))},r}(o.Component);d.defaultHooks=i.pureComponentHooks;var s={Line:c.tridentVersion<=4?function(e){return null}:d};t.Chart=s},function(e,t,n){"use strict";t.__esModule=!0,t.getRoute=void 0;var o=n(410),r=n(411),a=n(412),i=n(413),c=n(414),l=n(415),u=n(416),d=n(417),s=n(418),p=n(419),m=n(420),f=n(421),h=n(422),C=n(423),b=n(424),g=n(425),N=n(426),v=n(427),V=n(428),y=n(429),_=n(430),k=n(431),x=n(432),L=n(433),B=n(434),w=n(435),S=n(436),I=n(437),T=n(438),A=n(439),P=n(440),E=n(441),M=n(442),R=n(443),O=n(444),F=n(445),D=n(446),j=n(447),z=n(448),G=n(449),H=n(450),U=n(451),K=n(452),W=n(453),Y=n(454),q=n(455),$=n(456),Q=n(457),X=n(458),J=n(459),Z=n(460),ee=n(461),te=n(462),ne=n(463),oe=n(464),re=n(465),ae=n(466),ie=n(467),ce=n(468),le=n(469),ue=n(470),de=n(471),se=n(472),pe=n(473),me=n(474),fe=n(475),he=n(476),Ce=n(477),be=n(478),ge=n(479),Ne=n(480),ve=n(481),Ve=n(482),ye=n(483),_e=n(484),ke=n(485),xe=n(486),Le=n(487),Be=n(488),we=n(489),Se=n(490),Ie=n(491),Te=n(492),Ae=n(493),Pe=n(494),Ee=n(495),Me=n(496),Re=n(497),Oe=n(498),Fe=n(499),De=n(500),je=n(501),ze=n(502),Ge=n(503),He=n(504),Ue=n(505),Ke=n(506),We=n(507),Ye=n(508),qe=n(509),$e=n(510),Qe=n(511),Xe=n(512),Je=n(513),Ze=n(514),et=n(515),tt=n(516),nt=n(517),ot=n(518),rt=n(519),at=n(520),it=n(521),ct=n(522),lt=n(523),ut=n(524),dt=n(525),st=n(526),pt=n(527),mt=n(528),ft=n(529),ht=n(530),Ct=n(531),bt=n(532),gt=n(533),Nt=n(534),vt=n(535),Vt=n(536),yt={achievements:{component:function(){return o.Achievements},scrollable:!0},ai_airlock:{component:function(){return r.AiAirlock},scrollable:!1},airalarm:{component:function(){return a.AirAlarm},scrollable:!0},airlock_electronics:{component:function(){return i.AirlockElectronics},scrollable:!1},apc:{component:function(){return c.Apc},scrollable:!1},atmos_alert:{component:function(){return l.AtmosAlertConsole},scrollable:!0},atmos_control:{component:function(){return u.AtmosControlConsole},scrollable:!0},atmos_filter:{component:function(){return d.AtmosFilter},scrollable:!1},atmos_mixer:{component:function(){return s.AtmosMixer},scrollable:!1},atmos_pump:{component:function(){return p.AtmosPump},scrollable:!1},bepis:{component:function(){return C.Bepis},scrollable:!1},bank_machine:{component:function(){return m.BankMachine},scrollable:!1},blackmarket_uplink:{component:function(){return f.BlackmarketUplink},scrollable:!0,theme:"hackerman"},borgopanel:{component:function(){return b.BorgPanel},scrollable:!0},brig_timer:{component:function(){return g.BrigTimer},scrollable:!1},bsa:{component:function(){return h.BluespaceArtillery},scrollable:!1},canister:{component:function(){return N.Canister},scrollable:!1},canvas:{component:function(){return v.Canvas},scrollable:!1},cargo:{component:function(){return V.Cargo},scrollable:!0},cargo_express:{component:function(){return V.CargoExpress},scrollable:!0},cellular_emporium:{component:function(){return y.CellularEmporium},scrollable:!0},centcom_podlauncher:{component:function(){return _.CentcomPodLauncher},scrollable:!1},acclimator:{component:function(){return k.ChemAcclimator},scrollable:!1},chem_dispenser:{component:function(){return L.ChemDispenser},scrollable:!0},chemical_filter:{component:function(){return B.ChemFilter},scrollable:!0},chem_heater:{component:function(){return w.ChemHeater},scrollable:!0},chem_master:{component:function(){return S.ChemMaster},scrollable:!0},chem_press:{component:function(){return I.ChemPress},scrollable:!1},reaction_chamber:{component:function(){return T.ChemReactionChamber},scrollable:!0},chem_splitter:{component:function(){return A.ChemSplitter},scrollable:!1},chem_synthesizer:{component:function(){return x.ChemDebugSynthesizer},scrollable:!1},synthesizer:{component:function(){return P.ChemSynthesizer},scrollable:!1},cloner:{component:function(){return E.Cloner},scrollable:!1},codex_gigas:{component:function(){return M.CodexGigas},scrollable:!1},computer_fabricator:{component:function(){return R.ComputerFabricator},scrollable:!1},crayon:{component:function(){return O.Crayon},scrollable:!0},crew:{component:function(){return F.CrewConsole},scrollable:!0},cryo:{component:function(){return D.Cryo},scrollable:!1},decal_painter:{component:function(){return j.DecalPainter},scrollable:!1},disposal_unit:{component:function(){return z.DisposalUnit},scrollable:!1},dna_vault:{component:function(){return G.DnaVault},scrollable:!1},eightball:{component:function(){return H.EightBallVote},scrollable:!1},electropack:{component:function(){return U.Electropack},scrollable:!1},emergency_shuttle_console:{component:function(){return K.EmergencyShuttleConsole},scrollable:!1},engraved_message:{component:function(){return W.EngravedMessage},scrollable:!1},faxmachine:{component:function(){return Y.FaxMachine},scrollable:!1},gps:{component:function(){return q.Gps},scrollable:!0},gravity_generator:{component:function(){return $.GravityGenerator},scrollable:!1},gulag_console:{component:function(){return Q.GulagTeleporterConsole},scrollable:!1},gulag_item_reclaimer:{component:function(){return X.GulagItemReclaimer},scrollable:!0},holodeck:{component:function(){return J.Holodeck},scrollable:!0},hypnochair:{component:function(){return Z.HypnoChair},scrollable:!1},implantchair:{component:function(){return ee.ImplantChair},scrollable:!1},infrared_emitter:{component:function(){return te.InfraredEmitter},scrollable:!1},intellicard:{component:function(){return ne.Intellicard},scrollable:!0},keycard_auth:{component:function(){return oe.KeycardAuth},scrollable:!1},labor_claim_console:{component:function(){return re.LaborClaimConsole},scrollable:!1},language_menu:{component:function(){return ae.LanguageMenu},scrollable:!0},launchpad_console:{component:function(){return ie.LaunchpadConsole},scrollable:!0},launchpad_remote:{component:function(){return ie.LaunchpadRemote},scrollable:!1,theme:"syndicate"},mech_bay_power_console:{component:function(){return ce.MechBayPowerConsole},scrollable:!1},medical_kiosk:{component:function(){return le.MedicalKiosk},scrollable:!1},mining_vendor:{component:function(){return ue.MiningVendor},scrollable:!0},mint:{component:function(){return de.Mint},scrollable:!1},malfunction_module_picker:{component:function(){return se.MalfunctionModulePicker},scrollable:!0,theme:"malfunction"},mulebot:{component:function(){return pe.Mule},scrollable:!1},nanite_chamber_control:{component:function(){return me.NaniteChamberControl},scrollable:!0},nanite_cloud_control:{component:function(){return fe.NaniteCloudControl},scrollable:!0},nanite_program_hub:{component:function(){return he.NaniteProgramHub},scrollable:!0},nanite_programmer:{component:function(){return Ce.NaniteProgrammer},scrollable:!0},nanite_remote:{component:function(){return be.NaniteRemote},scrollable:!0},notificationpanel:{component:function(){return ge.NotificationPreferences},scrollable:!0},ntnet_relay:{component:function(){return Ne.NtnetRelay},scrollable:!1},ntos_ai_restorer:{component:function(){return ve.NtosAiRestorer},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_arcade:{component:function(){return Ve.NtosArcade},wrapper:function(){return Ee.NtosWrapper},scrollable:!1,theme:"ntos"},ntos_card:{component:function(){return ye.NtosCard},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_configuration:{component:function(){return _e.NtosConfiguration},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_crew_manifest:{component:function(){return ke.NtosCrewManifest},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_file_manager:{component:function(){return xe.NtosFileManager},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_job_manager:{component:function(){return Le.NtosJobManager},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_main:{component:function(){return Be.NtosMain},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_net_chat:{component:function(){return we.NtosNetChat},wrapper:function(){return Ee.NtosWrapper},scrollable:!1,theme:"ntos"},ntos_net_dos:{component:function(){return Se.NtosNetDos},wrapper:function(){return Ee.NtosWrapper},scrollable:!1,theme:"syndicate"},ntos_net_downloader:{component:function(){return Ie.NtosNetDownloader},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_net_monitor:{component:function(){return Te.NtosNetMonitor},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_power_monitor:{component:function(){return He.PowerMonitor},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_revelation:{component:function(){return Ae.NtosRevelation},wrapper:function(){return Ee.NtosWrapper},scrollable:!1,theme:"syndicate"},ntos_station_alert:{component:function(){return ct.StationAlertConsole},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_supermatter_monitor:{component:function(){return Pe.NtosSupermatterMonitor},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"ntos"},nuclear_bomb:{component:function(){return Me.NuclearBomb},scrollable:!1,theme:"retro"},ore_redemption_machine:{component:function(){return Fe.OreRedemptionMachine},scrollable:!0},ore_box:{component:function(){return Oe.OreBox},scrollable:!0},operating_computer:{component:function(){return Re.OperatingComputer},scrollable:!0},pandemic:{component:function(){return De.Pandemic},scrollable:!0},personal_crafting:{component:function(){return je.PersonalCrafting},scrollable:!0},portable_generator:{component:function(){return ze.PortableGenerator},scrollable:!1},portable_pump:{component:function(){return Ge.PortablePump},scrollable:!1},portable_scrubber:{component:function(){return Ge.PortableScrubber},scrollable:!1},power_monitor:{component:function(){return He.PowerMonitor},scrollable:!0},proximity_sensor:{component:function(){return Ue.ProximitySensor},scrollable:!1},radio:{component:function(){return Ke.Radio},scrollable:!1},radioactive_microlaser:{component:function(){return We.RadioactiveMicrolaser},scrollable:!1},roulette:{component:function(){return qe.Roulette},scrollable:!1,theme:"cardtable"},rpd:{component:function(){return Ye.RapidPipeDispenser},scrollable:!0},sat_control:{component:function(){return $e.SatelliteControl},scrollable:!1},scanner_gate:{component:function(){return Qe.ScannerGate},scrollable:!0},shuttle_manipulator:{component:function(){return Xe.ShuttleManipulator},scrollable:!0},signaler:{component:function(){return Je.Signaler},scrollable:!1},sleeper:{component:function(){return Ze.Sleeper},scrollable:!1},slime_swap_body:{component:function(){return et.SlimeBodySwapper},scrollable:!0},smartvend:{component:function(){return tt.SmartVend},scrollable:!0},smes:{component:function(){return nt.Smes},scrollable:!1},smoke_machine:{component:function(){return ot.SmokeMachine},scrollable:!1},solar_control:{component:function(){return rt.SolarControl},scrollable:!1},space_heater:{component:function(){return at.SpaceHeater},scrollable:!1},spawners_menu:{component:function(){return it.SpawnersMenu},scrollable:!0},station_alert:{component:function(){return ct.StationAlertConsole},scrollable:!0},suit_storage_unit:{component:function(){return lt.SuitStorageUnit},scrollable:!1},synd_contract:{component:function(){return Vt.SyndContractor},wrapper:function(){return Ee.NtosWrapper},scrollable:!0,theme:"syndicate"},tanks:{component:function(){return ut.Tank},scrollable:!1},tank_dispenser:{component:function(){return dt.TankDispenser},scrollable:!1},teleporter:{component:function(){return st.Teleporter},scrollable:!1},thermomachine:{component:function(){return pt.ThermoMachine},scrollable:!1},timer:{component:function(){return mt.Timer},scrollable:!1},transfer_valve:{component:function(){return ft.TransferValve},scrollable:!1},turbine_computer:{component:function(){return ht.TurbineComputer},scrollable:!1},turbolift:{component:function(){return Ct.TurboLift},scrollable:!0},uplink:{component:function(){return bt.Uplink},scrollable:!0,theme:"syndicate"},vault_controller:{component:function(){return gt.VaultController},scrollable:!1},vending:{component:function(){return Nt.Vending},scrollable:!0},wires:{component:function(){return vt.Wires},scrollable:!1}};t.getRoute=function(e){return yt[e.config&&e.config["interface"]]}},function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=t.Score=t.Achievement=void 0;var o=n(0),r=n(3),a=n(2),i=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",content:i?"Unlocked":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Achievement=i;var c=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",content:i>0?"Earned "+i+" times":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Score=c;t.Achievements=function(e){var t=(0,r.useBackend)(e).data;return(0,o.createComponentVNode)(2,a.Tabs,{children:[t.categories.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e,children:(0,o.createComponentVNode)(2,a.Box,{as:"Table",children:t.achievements.filter((function(t){return t.category===e})).map((function(e){return e.score?(0,o.createComponentVNode)(2,c,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name):(0,o.createComponentVNode)(2,i,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name)}))})},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"High Scores",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:t.highscore.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e.name,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Score"})]}),Object.keys(e.scores).map((function(n,r){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:r+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:n===t.user_ckey&&"green",textAlign:"center",children:[0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",mr:2}),n,0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.scores[n]})]},n)}))]})},e.name)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(3),a=n(2);t.AiAirlock=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}},l=c[i.power.main]||c[0],u=c[i.power.backup]||c[0],d=c[i.shock]||c[0];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:l.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.main,content:"Disrupt",onClick:function(){return n("disrupt-main")}}),children:[i.power.main?"Online":"Offline"," ",i.wires.main_1&&i.wires.main_2?i.power.main_timeleft>0&&"["+i.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.backup,content:"Disrupt",onClick:function(){return n("disrupt-backup")}}),children:[i.power.backup?"Online":"Offline"," ",i.wires.backup_1&&i.wires.backup_2?i.power.backup_timeleft>0&&"["+i.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:d.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(i.wires.shock&&0===i.shock),content:"Restore",onClick:function(){return n("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Temporary",onClick:function(){return n("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Permanent",onClick:function(){return n("shock-perm")}})],4),children:[2===i.shock?"Safe":"Electrified"," ",(i.wires.shock?i.shock_timeleft>0&&"["+i.shock_timeleft+"s]":"[Wires have been cut!]")||-1===i.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.id_scanner?"power-off":"times",content:i.id_scanner?"Enabled":"Disabled",selected:i.id_scanner,disabled:!i.wires.id_scanner,onClick:function(){return n("idscan-toggle")}}),children:!i.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.emergency?"power-off":"times",content:i.emergency?"Enabled":"Disabled",selected:i.emergency,onClick:function(){return n("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.locked?"lock":"unlock",content:i.locked?"Lowered":"Raised",selected:i.locked,disabled:!i.wires.bolts,onClick:function(){return n("bolt-toggle")}}),children:!i.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.lights?"power-off":"times",content:i.lights?"Enabled":"Disabled",selected:i.lights,disabled:!i.wires.lights,onClick:function(){return n("light-toggle")}}),children:!i.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.safe?"power-off":"times",content:i.safe?"Enabled":"Disabled",selected:i.safe,disabled:!i.wires.safe,onClick:function(){return n("safe-toggle")}}),children:!i.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.speed?"power-off":"times",content:i.speed?"Enabled":"Disabled",selected:i.speed,disabled:!i.wires.timing,onClick:function(){return n("speed-toggle")}}),children:!i.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.opened?"sign-out-alt":"sign-in-alt",content:i.opened?"Open":"Closed",selected:i.opened,disabled:i.locked||i.welded,onClick:function(){return n("open-close")}}),children:!(!i.locked&&!i.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),i.locked?"bolted":"",i.locked&&i.welded?" and ":"",i.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(18),a=n(22),i=n(3),c=n(2),l=n(37),u=n(70);t.AirAlarm=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.data,c=a.locked&&!a.siliconUser;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.InterfaceLockNoticeBox,{siliconUser:a.siliconUser,locked:a.locked,onLockStatusChange:function(){return r("lock")}}),(0,o.createComponentVNode)(2,d,{state:t}),!c&&(0,o.createComponentVNode)(2,p,{state:t})],0)};var d=function(e){var t=(0,i.useBackend)(e).data,n=(t.environment_data||[]).filter((function(e){return e.value>=.01})),a={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},l=a[t.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[n.length>0&&(0,o.createFragment)([n.map((function(e){var t=a[e.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:l.color,children:l.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:t.atmos_alarm||t.fire_alarm?"bad":"good",children:(t.atmos_alarm?"Atmosphere Alarm":t.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!t.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return m}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return C}},modes:{title:"Operating Mode",component:function(){return g}},thresholds:{title:"Alarm Thresholds",component:function(){return N}}},p=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.config,l=s[a.screen]||s.home,u=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:"home"!==a.screen&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("tgui:view",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},m=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data,a=r.mode,l=r.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:l?"exclamation-triangle":"exclamation",color:l&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return n(l?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===a?"exclamation-triangle":"exclamation",color:3===a&&"danger",content:"Panic Siphon",onClick:function(){return n("mode",{mode:3===a?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return n("tgui:view",{screen:"vents"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return n("tgui:view",{screen:"scrubbers"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return n("tgui:view",{screen:"modes"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return n("tgui:view",{screen:"thresholds"})}})],4)},f=function(e){var t=e.state,n=(0,i.useBackend)(e).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},h=function(e){var t=e.id_tag,n=e.long_name,r=e.power,l=e.checks,u=e.excheck,d=e.incheck,s=e.direction,p=e.external,m=e.internal,f=e.extdefault,h=e.intdefault,C=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(n),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:r?"power-off":"times",selected:r,content:r?"On":"Off",onClick:function(){return C("power",{id_tag:t,val:Number(!r)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:"release"===s?"Pressurizing":"Releasing"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:d,onClick:function(){return C("incheck",{id_tag:t,val:l})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:u,onClick:function(){return C("excheck",{id_tag:t,val:l})}})]}),!!d&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(m),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_internal_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:h,content:"Reset",onClick:function(){return C("reset_internal_pressure",{id_tag:t})}})]}),!!u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(p),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_external_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:f,content:"Reset",onClick:function(){return C("reset_external_pressure",{id_tag:t})}})]})]})})},C=function(e){var t=e.state,n=(0,i.useBackend)(e).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,b,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},b=function(e){var t=e.long_name,n=e.power,r=e.scrubbing,u=e.id_tag,d=e.widenet,s=e.filter_types,p=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(t),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:n?"power-off":"times",content:n?"On":"Off",selected:n,onClick:function(){return p("power",{id_tag:u,val:Number(!n)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:r?"filter":"sign-in-alt",color:r||"danger",content:r?"Scrubbing":"Siphoning",onClick:function(){return p("scrubbing",{id_tag:u,val:Number(!r)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:d?"expand":"compress",selected:d,content:d?"Expanded range":"Normal range",onClick:function(){return p("widenet",{id_tag:u,val:Number(!d)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:r&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,l.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return p("toggle_filter",{id_tag:u,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})},g=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data.modes;return r&&0!==r.length?r.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return n("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},N=function(e){var t=(0,i.useBackend)(e),n=t.act,a=t.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,a.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return n("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(3),a=n(2),i=n(164);t.AirlockElectronics=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.regions||[],u=c.accesses||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.oneAccess?"unlock":"lock",content:c.oneAccess?"One":"All",onClick:function(){return n("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&c.unres_direction?"check-square-o":"square-o",content:"North",selected:1&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&c.unres_direction?"check-square-o":"square-o",content:"East",selected:2&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&c.unres_direction?"check-square-o":"square-o",content:"South",selected:4&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&c.unres_direction?"check-square-o":"square-o",content:"West",selected:8&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,i.AccessList,{accesses:l,selectedList:u,accessMod:function(e){return n("set",{access:e})},grantAll:function(){return n("grant_all")},denyAll:function(){return n("clear_all")},grantDep:function(e){return n("grant_region",{region:e})},denyDep:function(e){return n("deny_region",{region:e})}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(0),r=n(3),a=n(2),i=n(70);t.Apc=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,u={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},s=u[c.externalPower]||u[0],p=u[c.chargingStatus]||u[0],m=c.powerChannels||[],f=d[c.malfStatus]||d[0],h=c.powerCellStatus/100;return c.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",c.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return n("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:c.siliconUser,locked:c.locked,onLockStatusChange:function(){return n("lock")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",content:c.isOperating?"On":"Off",selected:c.isOperating&&!l,disabled:l,onClick:function(){return n("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.chargeMode?"sync":"close",content:c.chargeMode?"Auto":"Off",disabled:l,onClick:function(){return n("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[m.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!l&&(1===e.status||3===e.status),disabled:l,onClick:function(){return n("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!l&&2===e.status,disabled:l,onClick:function(){return n("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!l&&0===e.status,disabled:l,onClick:function(){return n("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,c.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!c.siliconUser&&(0,o.createFragment)([!!c.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:f.icon,content:f.content,color:"bad",onClick:function(){return n(f.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return n("overload")}})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.coverLocked?"lock":"unlock",content:c.coverLocked?"Engaged":"Disengaged",disabled:l,onClick:function(){return n("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.emergencyLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.nightshiftLights?"Enabled":"Disabled",onClick:function(){return n("toggle_nightshift")}})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(3),a=n(2);t.AtmosAlertConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.priority||[],l=i.minor||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[c.length>0?c.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),l.length>0?l.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16)],0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(0),r=n(17),a=n(18),i=n(3),c=n(2);t.AtmosControlConsole=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,u=l.sensors||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:!!l.tank&&u[0].long_name,children:u.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,c.Section,{title:!l.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),l.tank&&(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"undo",content:"Reconnect",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.inputting?"power-off":"times",content:l.inputting?"Injecting":"Off",selected:l.inputting,onClick:function(){return n("input")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:l.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return n("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.outputting?"power-off":"times",content:l.outputting?"Open":"Closed",selected:l.outputting,onClick:function(){return n("output")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:parseFloat(l.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return n("pressure",{pressure:t})}})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(3),a=n(2),i=n(37);t.AtmosFilter=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.filter_types||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(c.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:c.rate===c.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,i.getGasLabel)(e.id,e.name),onClick:function(){return n("filter",{mode:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(3),a=n(2);t.AtmosMixer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.set_pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node2",{concentration:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(3),a=n(2);t.AtmosPump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),i.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.rate===i.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(0),r=n(3),a=n(2);t.BankMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.current_balance,l=i.siphoning,u=i.station_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:u+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"times":"sync",content:l?"Stop Siphoning":"Siphon Credits",selected:l,onClick:function(){return n(l?"halt":"siphon")}}),children:c+" cr"})})}),(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Authorized personnel only"})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BlackmarketUplink=void 0;var o=n(0),r=n(17),a=n(3),i=n(2);t.BlackmarketUplink=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.categories||[],u=c.delivery_methods||[],d=c.delivery_method_description||[],s=c.markets||{},p=c.items||{},m=!!c.buying&&(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Grid,{mt:20,children:(0,r.map)((function(e){var t=e.name;return"LTSRBT"!==t||c.ltsrbt_built?(0,o.createComponentVNode)(2,i.Grid.Column,{textAlign:"center",position:"relative",children:[(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"30px",children:t}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:d[t]})]}),(0,o.createComponentVNode)(2,i.Button,{content:e.price+" cr",mt:1,disabled:c.moneyc.money,onClick:function(){return n("select",{item:e.id})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.desc})})]},e.name)}))},e)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceArtillery=void 0;var o=n(0),r=n(3),a=n(2);t.BluespaceArtillery=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.notice,l=i.connected,u=i.unlocked,d=i.target;return(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",disabled:!u,onClick:function(){return n("recalibrate")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"average":"bad",fontSize:"25px",children:d||"No Target Set"})}),(0,o.createComponentVNode)(2,a.Section,{children:u?(0,o.createComponentVNode)(2,a.Box,{style:{margin:"auto"},children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"FIRE",color:"bad",disabled:!d,fontSize:"30px",textAlign:"center",lineHeight:"46px",onClick:function(){return n("fire")}})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"bad",fontSize:"18px",children:"Bluespace artillery is currently locked."}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Awaiting authorization via keycard reader from at minimum two station heads."})],4)})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return n("build")}})})})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(0),r=(n(22),n(15)),a=n(2);t.Bepis=function(e){var t=e.state,n=t.config,i=t.data,c=n.ref,l=i.amount;return(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.manual_power?"Off":"On",selected:!i.manual_power,onClick:function(){return(0,r.act)(c,"toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return(0,r.act)(c,"account_reset")}}),children:["Console is currently being operated by ",i.account_owner?i.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:i.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[i.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:i.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:i.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return(0,r.act)(c,"amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===i.manual_power||1===i.silicon_check,onClick:function(){return(0,r.act)(c,"deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",i.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",i.success_estimate,"%"]}),i.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"begin_experiment")},content:"Begin Testing"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BorgPanel=void 0;var o=n(0),r=n(3),a=n(2);t.BorgPanel=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.borg||{},l=i.cell||{},u=l.charge/l.maxcharge,d=i.channels||[],s=i.modules||[],p=i.upgrades||[],m=i.ais||[],f=i.laws||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return n("rename")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.emagged?"check-square-o":"square-o",content:"Emagged",selected:c.emagged,onClick:function(){return n("toggle_emagged")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.lockdown?"check-square-o":"square-o",content:"Locked Down",selected:c.lockdown,onClick:function(){return n("toggle_lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.scrambledcodes?"check-square-o":"square-o",content:"Scrambled Codes",selected:c.scrambledcodes,onClick:function(){return n("toggle_scrambledcodes")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[l.missing?(0,o.createVNode)(1,"span","color-bad","No cell installed",16):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,content:l.charge+" / "+l.maxcharge}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("set_charge")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Change",onClick:function(){return n("change_cell")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Remove",color:"bad",onClick:function(){return n("remove_cell")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radio Channels",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_radio",{channel:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:c.active_module===e.type?"check-square-o":"square-o",content:e.name,selected:c.active_module===e.type,onClick:function(){return n("setmodule",{module:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_upgrade",{upgrade:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"check-square-o":"square-o",content:e.name,selected:e.connected,onClick:function(){return n("slavetoai",{slavetoai:e.ref})}},e.ref)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.lawupdate?"check-square-o":"square-o",content:"Lawsync",selected:c.lawupdate,onClick:function(){return n("toggle_lawupdate")}}),children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(3),a=n(2);t.BrigTimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:i.timing?"Stop":"Start",selected:i.timing,onClick:function(){return n(i.timing?"stop":"start")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:i.flash_charging?"Recharging":"Flash",disabled:i.flash_charging,onClick:function(){return n("flash")}})],4),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("time",{adjust:-600})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("time",{adjust:-100})}})," ",String(i.minutes).padStart(2,"0"),":",String(i.seconds).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("time",{adjust:100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("time",{adjust:600})}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Short",onClick:function(){return n("preset",{preset:"short"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Medium",onClick:function(){return n("preset",{preset:"medium"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Long",onClick:function(){return n("preset",{preset:"long"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(0),r=n(3),a=n(2);t.Canister=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:["The regulator ",i.hasHoldingTank?"is":"is not"," connected to a tank."]}),(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Relabel",onClick:function(){return n("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.tankPressure})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:i.portConnected?"good":"average",content:i.portConnected?"Connected":"Not Connected"}),!!i.isPrototype&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.restricted?"lock":"unlock",color:"caution",content:i.restricted?"Restricted to Engineering":"Public",onClick:function(){return n("restricted")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Valve",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.releasePressure/(i.maxReleasePressure-i.minReleasePressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.releasePressure})," kPa"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:i.releasePressure===i.defaultReleasePressure,content:"Reset",onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:i.releasePressure<=i.minReleasePressure,content:"Min",onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("pressure",{pressure:"input"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:i.releasePressure>=i.maxReleasePressure,content:"Max",onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.valveOpen?"unlock":"lock",color:i.valveOpen?i.hasHoldingTank?"caution":"danger":null,content:i.valveOpen?"Open":"Closed",onClick:function(){return n("valve")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:i.valveOpen&&"danger",content:"Eject",onClick:function(){return n("eject")}}),children:[!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:i.holdingTank.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.holdingTank.tankPressure})," kPa"]})]}),!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Canvas=void 0;var o=n(0),r=n(3),a=n(2);n(10);var i=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).canvasRef=(0,o.createRef)(),n.onCVClick=t.onCanvasClick,n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.componentDidMount=function(){this.drawCanvas(this.props)},a.componentDidUpdate=function(){this.drawCanvas(this.props)},a.drawCanvas=function(e){var t=this.canvasRef.current.getContext("2d"),n=e.value,o=n.length;if(o){var r=n[0].length,a=Math.round(this.canvasRef.current.width/o),i=Math.round(this.canvasRef.current.height/r);t.save(),t.scale(a,i);for(var c=0;c=0||(r[n]=e[n]);return r}(t,["res","value","px_per_unit"]),c=n.length*a,l=0!==c?n[0].length*a:0;return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:c||300,height:l||300},i,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component);t.Canvas=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i,{value:c.grid,onCanvasClick:function(e,t){return n("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!c.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return n("finalize")},content:"Finalize"}),c.name]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=t.Cargo=void 0;var o=n(0),r=n(17),a=n(15),i=n(2),c=n(70);t.Cargo=function(e){var t=e.state,n=t.config,r=t.data,c=n.ref,s=r.supplies||{},p=r.requests||[],m=r.cart||[],f=m.reduce((function(e,t){return e+t.cost}),0),h=!r.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:[0===m.length&&"Cart is empty",1===m.length&&"1 item",m.length>=2&&m.length+" items"," ",f>0&&"("+f+" cr)"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return(0,a.act)(c,"clear")}})],4);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle",children:r.docked&&!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{content:r.location,onClick:function(){return(0,a.act)(c,"send")}})||r.location}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"CentCom Message",children:r.message}),r.loan&&!r.requestonly?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loan",children:r.loan_dispatched?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Loaned to Centcom"}):(0,o.createComponentVNode)(2,i.Button,{content:"Loan Shuttle",disabled:!(r.away&&r.docked),onClick:function(){return(0,a.act)(c,"loan")}})}):""]})}),(0,o.createComponentVNode)(2,i.Tabs,{mt:2,children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Catalog",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Catalog",buttons:(0,o.createFragment)([h,(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:r.self_paid?"check-square-o":"square-o",content:"Buy Privately",selected:r.self_paid,onClick:function(){return(0,a.act)(c,"toggleprivate")}})],0),children:(0,o.createComponentVNode)(2,l,{state:t,supplies:s})})}},"catalog"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Requests ("+p.length+")",icon:"envelope",highlight:p.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Active Requests",buttons:!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return(0,a.act)(c,"denyall")}}),children:(0,o.createComponentVNode)(2,u,{state:t,requests:p})})}},"requests"),!r.requestonly&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Checkout ("+m.length+")",icon:"shopping-cart",highlight:m.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Current Cart",buttons:h,children:(0,o.createComponentVNode)(2,d,{state:t,cart:m})})}},"cart")]})],4)};var l=function(e){var t=e.state,n=e.supplies,c=t.config,l=t.data,u=c.ref,d=function(e){var t=n[e].packs;return(0,o.createVNode)(1,"table","LabeledList",t.map((function(e){return(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[e.name,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.small_item&&(0,o.createFragment)([(0,o.createTextVNode)("Small Item")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.access&&(0,o.createFragment)([(0,o.createTextVNode)("Restrictions Apply")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:(l.self_paid?Math.round(1.1*e.cost):e.cost)+" credits",tooltip:e.desc,tooltipPosition:"left",onClick:function(){return(0,a.act)(u,"add",{id:e.id})}}),2)],4,null,e.name)})),0)};return(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e){var t=e.name;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:t,children:d},t)}))(n)})},u=function(e){var t=e.state,n=e.requests,r=t.config,c=t.data,l=r.ref;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"No Requests"}):(0,o.createVNode)(1,"table","LabeledList",n.map((function(e){return(0,o.createFragment)([(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[(0,o.createTextVNode)("#"),e.id,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__content",e.object,0),(0,o.createVNode)(1,"td","LabeledList__cell",[(0,o.createTextVNode)("By "),(0,o.createVNode)(1,"b",null,e.orderer,0)],4),(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createVNode)(1,"i",null,e.reason,0),2),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",[e.cost,(0,o.createTextVNode)(" credits"),(0,o.createTextVNode)(" "),!c.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"check",color:"good",onClick:function(){return(0,a.act)(l,"approve",{id:e.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"bad",onClick:function(){return(0,a.act)(l,"deny",{id:e.id})}})],4)],0)],4)],4,e.id)})),0)},d=function(e){var t=e.state,n=e.cart,r=t.config,c=t.data,l=r.ref;return(0,o.createFragment)([0===n.length&&"Nothing in cart",n.length>0&&(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{className:"candystripe",label:"#"+e.id,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,children:[!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)," ",e.cost," credits"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return(0,a.act)(l,"remove",{id:e.id})}})],4),children:e.object},e.id)}))}),n.length>0&&!c.requestonly&&(0,o.createComponentVNode)(2,i.Box,{mt:2,children:1===c.away&&1===c.docked&&(0,o.createComponentVNode)(2,i.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return(0,a.act)(l,"send")}})||(0,o.createComponentVNode)(2,i.Box,{opacity:.5,children:["Shuttle in ",c.location,"."]})})],0)};t.CargoExpress=function(e){var t=e.state,n=t.config,r=t.data,u=n.ref,d=r.supplies||{};return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{siliconUser:r.siliconUser,locked:r.locked,onLockStatusChange:function(){return(0,a.act)(u,"lock")},accessText:"a QM-level ID card"}),!r.locked&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Cargo Bay",selected:!r.usingBeacon,onClick:function(){return(0,a.act)(u,"LZCargo")}}),(0,o.createComponentVNode)(2,i.Button,{selected:r.usingBeacon,disabled:!r.hasBeacon,onClick:function(){return(0,a.act)(u,"LZBeacon")},children:[r.beaconzone," (",r.beaconName,")"]}),(0,o.createComponentVNode)(2,i.Button,{content:r.printMsg,disabled:!r.canBuyBeacon,onClick:function(){return(0,a.act)(u,"printBeacon")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Notice",children:r.message})]})}),(0,o.createComponentVNode)(2,l,{state:t,supplies:d})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(0),r=n(3),a=n(2);t.CellularEmporium=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.abilities;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!i.can_readapt,onClick:function(){return n("readapt")}}),children:i.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return n("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncher=void 0;var o=n(0),r=(n(22),n(3)),a=n(2);t.CentcomPodLauncher=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return n("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return n("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return n("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return n("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return n("bay5")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return n("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return n("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return n("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return n("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return n("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return n("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return n("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return n("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return n("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return n("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return n("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return n("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return n("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return n("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return n("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return n("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return n("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return n("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return n("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return n("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return n("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return n("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return n("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return n("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return n("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return n("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return n("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return n("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return n("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return n("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return n("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return n("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return n("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return n("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return n("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return n("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return n("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return n("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return n("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return n("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return n("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return n("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return n("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gondola",selected:13===i.styleChoice,tooltip:"This gondola can control when he wants to deliver his supplies\nif he has a smart enough mind, so offer up his body to ghosts\nfor maximum enjoyment. (Make sure to turn off bluespace and\nset a arbitrarily high open-time if you do!",onClick:function(){return n("styleGondola")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return n("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pody Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return n("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return n("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return n("clearBay")}})],4)})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(0),r=n(3),a=n(2);t.ChemAcclimator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[i.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return n("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:i.target_temperature,stepPixelSize:2,onChange:function(e,t){n("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.enabled?"On":"Off",selected:i.enabled,onClick:function(){return n("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.max_volume,unit:"u",width:"50px",minValue:i.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return n("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:i.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:i.emptying?"Emptying":"Filling"})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(0),r=n(3),a=n(2);t.ChemDebugSynthesizer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.amount,l=i.beakerCurrentVolume,u=i.beakerMaxVolume,d=i.isBeakerLoaded,s=i.beakerContents,p=void 0===s?[]:s;return(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",minValue:1,maxValue:u,step:1,stepPixelSize:2,onChange:function(e,t){return n("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return n("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return n("makecup")}}),children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})," / "+u+" u"]}),p.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(18),a=n(22),i=n(3),c=n(2);t.ChemDispenser=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,u=!!l.recordingRecipe,d=Object.keys(l.recipes).map((function(e){return{name:e,contents:l.recipes[e]}})),s=l.beakerTransferAmounts||[],p=u&&Object.keys(l.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:l.recordingRecipe[e]}}))||l.beakerContents||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Status",buttons:u&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:l.energy/l.maxEnergy,content:(0,r.toFixed)(l.energy)+" units"})})})}),(0,o.createComponentVNode)(2,c.Section,{title:"Recipes",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return n("clear_recipes")}})}),!u&&(0,o.createComponentVNode)(2,c.Button,{icon:"circle",disabled:!l.isBeakerLoaded,content:"Record",onClick:function(){return n("record_recipe")}}),u&&(0,o.createComponentVNode)(2,c.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return n("cancel_recording")}}),u&&(0,o.createComponentVNode)(2,c.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return n("save_recording")}})],0),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:[d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.name,onClick:function(){return n("dispense_recipe",{recipe:e.name})}},e.name)})),0===d.length&&(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Dispense",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",selected:e===l.amount,content:e,onClick:function(){return n("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:l.chemicals.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.title,onClick:function(){return n("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"minus",disabled:u,content:e,onClick:function(){return n("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l.isBeakerLoaded,onClick:function(){return n("eject")}}),children:(u?"Virtual beaker":l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:l.beakerCurrentVolume}),(0,o.createTextVNode)("/"),l.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,c.Box,{color:"label",children:l.isBeakerLoaded||u?0===p.length&&"Nothing":"N/A"}),p.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{color:"label",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(0),r=n(3),a=n(2);var i=function(e){var t=(0,r.useBackend)(e).act,n=e.title,i=e.list,c=e.reagentName,l=e.onReagentInput,u=n.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:n,minHeight:40,ml:.5,mr:.5,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return l(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return t("add",{which:u,name:c})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return t("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={leftReagentName:"",rightReagentName:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setLeftReagentName=function(e){this.setState({leftReagentName:e})},c.setRightReagentName=function(e){this.setState({rightReagentName:e})},c.render=function(){var e=this,t=this.props.state,n=t.data,r=n.left,c=void 0===r?[]:r,l=n.right,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Left",list:c,reagentName:this.state.leftReagentName,onReagentInput:function(t){return e.setLeftReagentName(t)},state:t})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Right",list:u,reagentName:this.state.rightReagentName,onReagentInput:function(t){return e.setRightReagentName(t)},state:t})})]})},r}(o.Component);t.ChemFilter=c},function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(0),r=n(18),a=n(3),i=n(2),c=n(119);t.ChemHeater=function(e){var t=(0,a.useBackend)(e),n=t.act,l=t.data,u=l.targetTemp,d=l.isActive,s=l.isBeakerLoaded,p=l.currentTemp,m=l.beakerCurrentVolume,f=l.beakerMaxVolume,h=l.beakerContents,C=void 0===h?[]:h;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d?"power-off":"times",selected:d,content:d?"On":"Off",onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.NumberInput,{width:"65px",unit:"K",step:2,stepPixelSize:1,value:(0,r.round)(u),minValue:0,maxValue:1e3,onDrag:function(e,t){return n("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,i.Box,{width:"60px",textAlign:"right",children:s&&(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:!!s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:2,children:[m," / ",f," units"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})],4),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:s,beakerContents:C})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(15),a=n(2);t.ChemMaster=function(e){var t=e.state,n=t.config,l=t.data,s=n.ref,p=l.screen,m=l.beakerContents,f=void 0===m?[]:m,h=l.bufferContents,C=void 0===h?[]:h,b=l.beakerCurrentVolume,g=l.beakerMaxVolume,N=l.isBeakerLoaded,v=l.isPillBottleLoaded,V=l.pillBottleCurrentAmount,y=l.pillBottleMaxAmount;return"analyze"===p?(0,o.createComponentVNode)(2,d,{state:t}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:b,initial:0})," / "+g+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(s,"eject")}})],4),children:[!N&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!N&&0===f.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,i,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:l.mode?"good":"bad",icon:l.mode?"exchange-alt":"times",content:l.mode?"Transfer":"Destroy",onClick:function(){return(0,r.act)(s,"toggleMode")}})],4),children:[0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,i,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,u,{state:t})}),!!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[V," / ",y," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(s,"ejectPillBottle")}})],4)})],0)};var i=a.Table,c=function(e){var t=e.state,n=e.chemical,i=e.transferTo,c=t.config.ref;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:n.volume,initial:0})," units of "+n.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return(0,r.act)(c,"analyze",{id:n.id})}})]})]},n.id)},l=function(e){var t=e.label,n=e.amountUnit,r=e.amount,i=e.onChangeAmount,c=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:14,unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:i}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:c}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",content:l})]})},u=function(e){var t,n;function i(){var t;return(t=e.call(this)||this).state={pillAmount:1,patchAmount:1,bottleAmount:1,packAmount:1},t}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=(this.state,this.props),n=t.state.config.ref,i=this.state,c=i.pillAmount,u=i.patchAmount,d=i.bottleAmount,s=i.packAmount,p=t.state.data,m=p.condi,f=p.chosenPillStyle,h=p.pillStyles,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===f,textAlign:"center",color:"transparent",onClick:function(){return(0,r.act)(n,"pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!m&&(0,o.createComponentVNode)(2,l,{label:"Pills",amount:c,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({pillAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"pill",amount:c,volume:"auto"})}}),!m&&(0,o.createComponentVNode)(2,l,{label:"Patches",amount:u,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(t,n){return e.setState({patchAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"patch",amount:u,volume:"auto"})}}),!m&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:d,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"bottle",amount:d,volume:"auto"})}}),!!m&&(0,o.createComponentVNode)(2,l,{label:"Packs",amount:s,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(t,n){return e.setState({packAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentPack",amount:s,volume:"auto"})}}),!!m&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:d,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentBottle",amount:d,volume:"auto"})}})]})},i}(o.Component),d=function(e){var t=e.state,n=t.config.ref,i=t.data.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return(0,r.act)(n,"goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:i.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:i.color,mr:1}),i.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:i.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[i.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:i.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:i.addicD})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(0),r=n(3),a=n(2);t.ChemPress=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.pill_size,l=i.pill_name,u=i.pill_style,d=i.pill_styles,s=void 0===d?[]:d;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",width:"43px",minValue:5,maxValue:50,step:1,stepPixelSize:2,onChange:function(e,t){return n("change_pill_size",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Name",children:(0,o.createComponentVNode)(2,a.Input,{value:l,onChange:function(e,t){return n("change_pill_name",{name:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Style",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===u,textAlign:"center",color:"transparent",onClick:function(){return n("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(0),r=n(15),a=n(2),i=n(17),c=n(10);var l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).state={reagentName:"",reagentQuantity:1},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.setReagentName=function(e){this.setState({reagentName:e})},u.setReagentQuantity=function(e){this.setState({reagentQuantity:e})},u.render=function(){var e=this,t=this.props.state,n=t.config,l=t.data,u=n.ref,d=l.emptying,s=l.reagents||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:d?"bad":"good",children:d?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(t,n){return e.setReagentName(n)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,c.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,a.NumberInput,{value:this.state.reagentQuantity,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(t,n){return e.setReagentQuantity(n)}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return(0,r.act)(u,"add",{chem:e.state.reagentName,amount:e.state.reagentQuantity})}})],4)],4),(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return(0,r.act)(u,"remove",{chem:t})}}),children:e},t)}))(s)]})})},l}(o.Component);t.ChemReactionChamber=l},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(0),r=n(18),a=n(3),i=n(2);t.ChemSplitter=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.straight,u=c.side,d=c.max_transfer;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:l,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"side",amount:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(0),r=n(18),a=n(3),i=n(2);t.ChemSynthesizer=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.amount,u=c.current_reagent,d=c.chemicals,s=void 0===d?[]:d,p=c.possible_amounts,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===l,onClick:function(){return n("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===u,onClick:function(){return n("select",{reagent:e.id})}},e.id)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cloner=void 0;var o=n(0),r=n(3),a=n(2),i=n(119);t.Cloner=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",minheight:"50px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})}),(0,o.createComponentVNode)(2,a.Section,{title:"Progess",minheight:"50px",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.progress,content:c.progress+"%",maxValue:100})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(0),r=n(3),a=n(2);t.CodexGigas=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[i.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==i.currentSection,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>2,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>4,onClick:function(){return n(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:["the Red","the Soulless","the Master","the Lord of all things","Jr."].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==i.currentSection,onClick:function(){return n(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:i.currentSection<4,onClick:function(){return n("search")}})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(22),n(3)),a=n(2);t.ComputerFabricator=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==l.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return c("clean_order")}}),(0,o.createComponentVNode)(2,i,{state:t})],0)};var i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return 0===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:51,children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"2"})}})})]})})]}):1===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:47,buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a slot that allows you to manipulate RFID cards.\nPlease note that this is not necessary to allow the device\nto read your identification, it is just necessary to\nmanipulate other cards.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return n("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return n("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:"26px",onClick:function(){return n("confirm_order")}})]}):2===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:47,children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?i.COLORS.department.security:e>=20&&e<30?i.COLORS.department.medbay:e>=30&&e<40?i.COLORS.department.science:e>=40&&e<50?i.COLORS.department.engineering:e>=50&&e<60?i.COLORS.department.cargo:e>=200&&e<230?i.COLORS.department.centcom:i.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:4,color:i.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,d=i.sensors||[];return(0,o.createComponentVNode)(2,a.Section,{minHeight:90,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(f=e.ijob,f%10==0),color:l(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,r=e.toxdam,d=e.burndam,s=e.brutedam,p=t+r+d+s,m=Math.min(Math.max(Math.ceil(p/25),0),5),c[m])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return n("select_person",{name:e.name})}})})]},e.name);var t,r,d,s,p,m,f}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(3),a=n(2),i=n(119);t.Cryo=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",content:c.occupant.name?c.occupant.name:"No Occupant"}),!!c.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",content:c.occupant.stat,color:c.occupant.statstate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:c.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant.health/c.occupant.maxHealth,color:c.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",content:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",disabled:c.isOpen,onClick:function(){return n("power")},color:c.isOperating&&"green",children:c.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.isOpen?"unlock":"lock",onClick:function(){return n("door")},content:c.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:c.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return n("autoeject")},content:c.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(0),r=n(3),a=n(2);t.DecalPainter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.decal_list||[],l=i.color_list||[],u=i.dir_list||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===i.decal_style,onClick:function(){return n("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===i.decal_color,onClick:function(){return n("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===i.decal_direction,onClick:function(){return n("selected direction",{dirs:e.dirs})}},e.dirs)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(0),r=n(3),a=n(2);t.DisposalUnit=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return l.full_pressure?(t="good",n="Ready"):l.panel_open?(t="bad",n="Power Disabled"):l.pressure_charging?(t="average",n="Pressurizing"):(t="bad",n="Off"),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:t,children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.flush?"toggle-on":"toggle-off",disabled:l.isai||l.panel_open,content:l.flush?"Disengage":"Engage",onClick:function(){return c(l.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:l.isai,content:"Eject Contents",onClick:function(){return c("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:l.panel_open,selected:l.pressure_charging,onClick:function(){return c(l.pressure_charging?"pump-0":"pump-1")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(0),r=n(3),a=n(2);t.DnaVault=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.completed,l=i.used,u=i.choiceA,d=i.choiceB,s=i.dna,p=i.dna_max,m=i.plants,f=i.plants_max,h=i.animals,C=i.animals_max;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/p,content:s+" / "+p+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m/f,content:m+" / "+f+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/h,content:h+" / "+C+" Samples"})})]})}),!(!c||l)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:u,textAlign:"center",onClick:function(){return n("gene",{choice:u})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:d,textAlign:"center",onClick:function(){return n("gene",{choice:d})}})})]})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(0),r=n(3),a=n(2),i=n(22);t.EightBallVote=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.question,u=c.shaking,d=c.answers,s=void 0===d?[]:d;return u?(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',l,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,i.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return n("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(2),a=n(3),i=n(18);t.Electropack=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.power,u=c.code,d=c.frequency,s=c.minFrequency,p=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,r.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:s/10,maxValue:p/10,value:d/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:13,onDrag:function(e,t){return n("code",{code:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(0),r=n(2),a=n(3);t.EmergencyShuttleConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.timer_str,l=i.enabled,u=i.emagged,d=i.engines_started,s=i.authorizations_remaining,p=i.authorizations,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:c}),(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,r.Box,{inline:!0,color:d?"good":"average",ml:1,children:d?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!l,onClick:function(){return n("abort")}}),children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!l,onClick:function(){return n("authorize")}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!l,onClick:function(){return n("repeal")}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,color:u?"bad":"good",children:u?"ERROR":"Remaining: "+s}),children:[m.length>0?m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,r.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"}),m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)}))]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(0),r=n(22),a=n(3),i=n(2);t.EngravedMessage=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.admin_mode,u=c.creator_key,d=c.creator_name,s=c.has_liked,p=c.has_disliked,m=c.hidden_message,f=c.is_creator,h=c.num_likes,C=c.num_dislikes,b=c.realdate;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(m)}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-up",content:" "+h,disabled:f,selected:s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("like")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"circle",disabled:f,selected:!p&&!s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("neutral")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-down",content:" "+C,disabled:f,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("dislike")}})})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Created On",children:b})})}),(0,o.createComponentVNode)(2,i.Section),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return n("delete")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Ckey",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Character Name",children:d})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxMachine=void 0;var o=n(0),r=n(3),a=n(2),i=n(118);t.FaxMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Confirm Identity:",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return n("scan")},content:c.scan_name})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Authorize:",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.authenticated?"unlock":"lock",onClick:function(){return n("auth")},content:c.authenticated?"Log Out":"Log In"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fax Menu",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Network",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:c.network})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Currently Sending:",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return n("paper")},content:c.paper}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil",onClick:function(){return n("rename")},content:"Rename",disabled:!c.paperinserted})]}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Sending to:",children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return n("dept")},content:c.destination,disabled:!c.authenticated})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Action:",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.cooldown&&c.respectcooldown?"clock-o":"envelope-o",onClick:function(){return n("send")},content:c.cooldown&&c.respectcooldown?"Realigning":"Send"})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(0),r=n(17),a=n(69),i=n(18),c=n(158),l=n(3),u=n(2),d=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e){var t=(0,l.useBackend)(e),n=t.act,s=t.data,p=s.currentArea,m=s.currentCoords,f=s.globalmode,h=s.power,C=s.tag,b=s.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,c.vecLength)((0,c.vecSubtract)(d(m),d(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(s.signals||[]);return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,u.Button,{icon:"power-off",content:h?"On":"Off",selected:h,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,u.Button,{icon:"pencil-alt",content:C,onClick:function(){return n("rename")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,u.Button,{icon:b?"unlock":"lock",content:b?"AUTO":"MANUAL",color:!b&&"bad",onClick:function(){return n("updating")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,u.Button,{icon:"sync",content:f?"MAXIMUM":"LOCAL",selected:!f,onClick:function(){return n("globalmode")}})})]})}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,u.Box,{fontSize:"18px",children:[p," (",m,")"]})}),(0,o.createComponentVNode)(2,u.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,u.Table,{children:[(0,o.createComponentVNode)(2,u.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,u.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,u.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,i.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,u.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(0),r=n(3),a=n(2);t.GravityGenerator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.breaker,l=i.charge_count,u=i.charging_state,d=i.on,s=i.operational;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No data available"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Breaker",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,disabled:!s,onClick:function(){return n("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(d&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})}),s&&0!==u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"WARNING - Radiation detected"}),s&&0===u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No radiation detected"})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(0),r=n(3),a=n(2);t.GulagTeleporterConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.teleporter,l=i.teleporter_lock,u=i.teleporter_state_open,d=i.teleporter_location,s=i.beacon,p=i.beacon_location,m=i.id,f=i.id_name,h=i.can_teleport,C=i.goal,b=void 0===C?0:C,g=i.prisoner,N=void 0===g?{}:g;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:u?"Open":"Closed",disabled:l,selected:u,onClick:function(){return n("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"unlock",content:l?"Locked":"Unlocked",selected:l,disabled:u,onClick:function(){return n("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:c?"good":"bad",buttons:!c&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_teleporter")}}),children:c?d:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:s?"good":"bad",buttons:!s&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_beacon")}}),children:s?p:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:m?f:"No ID",onClick:function(){return n("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:b,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return n("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:N.name?N.name:"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:N.crimstat?N.crimstat:"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!h,textAlign:"center",color:"bad",onClick:function(){return n("teleport")}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(0),r=n(3),a=n(2);t.GulagItemReclaimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.mobs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!i.can_reclaim,onClick:function(){return n("release_items",{mobref:e.mob})}})})]},e.mob)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=n(3),a=n(2);t.Holodeck=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_toggle_safety,l=i.default_programs,u=void 0===l?[]:l,d=i.emag_programs,s=void 0===d?[]:d,p=i.emagged,m=i.program;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"unlock":"lock",content:"Safeties",color:"bad",disabled:!c,selected:!p,onClick:function(){return n("safety")}}),children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))}),!!p&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(0),r=n(3),a=n(2);t.HypnoChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:i.trigger,onChange:function(e,t){return n("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return n("interrogate")}}),1===i.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(0),r=n(3),a=n(2);t.ImplantChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.ready?i.special_name||"Implant":"Recharging",onClick:function(){return n("implant")}}),0===i.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[i.ready_implants,1===i.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(0),r=n(3),a=n(2);t.InfraredEmitter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.on,l=i.visible;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"eye":"eye-slash",content:l?"Visible":"Invisible",selected:l,onClick:function(){return n("visibility")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(0),r=n(3),a=n(2);t.Intellicard=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=u||d,l=i.name,u=i.isDead,d=i.isBraindead,s=i.health,p=i.wireless,m=i.radio,f=i.wiping,h=i.laws,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.Section,{title:l||"Empty Card",buttons:!!l&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:f?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return n("wipe")}}),children:!!l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:c?"bad":"good",children:c?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return n("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:m,onClick:function(){return n("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(3),a=n(2);t.KeycardAuth=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===i.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===i.waiting&&(0,o.createFragment)([!!i.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return n("auth_swipe")},content:"Authorize"}),0===i.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return n("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return n("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return n("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(22),a=n(3),i=n(2);t.LaborClaimConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.can_go_home,u=c.id_points,d=c.ores,s=c.status_info,p=c.unclaimed_points;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,i.Button,{content:"Move shuttle",disabled:!l,onClick:function(){return n("move_shuttle")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Claim points",disabled:!p,onClick:function(){return n("claim_points")}}),children:p})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(0),r=n(3),a=n(2);t.LanguageMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.admin_mode,l=i.is_living,u=i.omnitongue,d=i.languages,s=void 0===d?[]:d,p=i.unknown_languages,m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return n("select_default",{language_name:e.name})}}),!!c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return n("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(u?"Enabled":"Disabled"),selected:u,onClick:function(){return n("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadRemote=t.LaunchpadControl=t.LaunchpadButtonPad=void 0;var o=n(0),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return t("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return t("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return t("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return t("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return t("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:-1})}})]})]})};t.LaunchpadButtonPad=i;var c=function(e){var t=e.topLevel,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.x,d=l.y,s=l.pad_name,p=l.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:s,width:"170px",onChange:function(e,t){return c("rename",{name:t})}}),level:t?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return c("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i,{state:e.state})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return c("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return c("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return c("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return c("pull")}})})]})]})};t.LaunchpadControl=c;t.LaunchpadRemote=function(e){var t=(0,r.useBackend)(e).data,n=t.has_pad,i=t.pad_closed;return n?i?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"}):(0,o.createComponentVNode)(2,c,{topLevel:!0,state:e.state}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})};t.LaunchpadConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.launchpads,u=void 0===l?[]:l,d=i.selected_id;return u.length<=0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"}):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.Box,{style:{"border-right":"2px solid rgba(255, 255, 255, 0.1)"},minHeight:"190px",mr:1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name,selected:d===e.id,color:"transparent",onClick:function(){return n("select_pad",{id:e.id})}},e.name)}))})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:d?(0,o.createComponentVNode)(2,c,{state:e.state}):(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(0),r=n(3),a=n(2);t.MechBayPowerConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.recharge_port,c=i&&i.mech,l=c&&c.cell;return(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.health/c.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.charge/l.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.charge})," / "+l.maxcharge]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(0),r=(n(22),n(3)),a=n(2);t.MedicalKiosk=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Health Kiosk",textAlign:"center",icon:"procedures",children:[(0,o.createComponentVNode)(2,a.Box,{my:1,textAlign:"center",children:["Greetings Valued Employee. Please select your desired diagnosis. Diagnosis costs ",i.kiosk_cost," credits.",(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:["Current patient targeted for scanning: ",i.patient_name," |"]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Button,{icon:"procedures",disabled:!i.active_status_1,tooltip:"Reads back exact values of your general health scan.",onClick:function(){return n("beginScan_1")},content:"General Health Scan"}),(0,o.createComponentVNode)(2,a.Button,{icon:"heartbeat",disabled:!i.active_status_2,tooltip:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status.",onClick:function(){return n("beginScan_2")},content:"Symptom Based Checkup"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return n("clearTarget")},content:"Reset Scanner"})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"radiation-alt",disabled:!i.active_status_3,tooltip:"Provides information about brain trauma and radiation.",onClick:function(){return n("beginScan_3")},content:"Neurological/Radiological Scan"}),(0,o.createComponentVNode)(2,a.Button,{icon:"mortar-pestle",disabled:!i.active_status_4,tooltip:"Provides a list of consumed chemicals, as well as potential\nside effects.",onClick:function(){return n("beginScan_4")},content:"Chemical Analysis and Psychoactive Scan"})]})]}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"normal",label:"General Health Scan",children:function(){return(0,o.createComponentVNode)(2,a.Box,{children:0===i.active_status_1&&(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.patient_health/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.patient_health}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.brute_health/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.brute_health})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.burn_health/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.burn_health})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.suffocation_health/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.suffocation_health})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.toxin_health/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.toxin_health})})})]})})})}},"tab_1"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"normal",label:"Symptom Based Checkup",children:function(){return(0,o.createComponentVNode)(2,a.Box,{children:0===i.active_status_2&&(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:i.patient_status}),(0,o.createComponentVNode)(2,a.LabeledList.Divider,{size:1}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i.patient_illness}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:i.illness_info}),(0,o.createComponentVNode)(2,a.LabeledList.Divider,{size:1}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[i.bleed_status,(0,o.createComponentVNode)(2,a.LabeledList.Divider,{size:1}),(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.blood_levels/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.blood_levels})})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:i.blood_status})]})})})}},"tab_2"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"normal",label:"Neurological/Radiological Scan",children:function(){return(0,o.createComponentVNode)(2,a.Box,{children:0===i.active_status_3&&(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health ",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.clone_health/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.clone_health})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.brain_damage/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.brain_damage})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:i.brain_health}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Status",children:i.rad_status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation Percentage",children:[i.rad_value,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:i.trauma_status})]})})}},"tab_3"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"normal",label:"Chemical Analysis and Psychoactive Scan",children:function(){return(0,o.createComponentVNode)(2,a.Box,{children:0===i.active_status_4&&(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:i.are_chems_present?i.chemical_list.length?i.chemical_list.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)})):(0,o.createComponentVNode)(2,a.Box,{children:"No reagents detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:i.are_overdoses_present?i.overdose_status.length?i.overdose_status.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)})):(0,o.createComponentVNode)(2,a.Box,{children:"No reagents detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:i.are_addictions_present?i.addiction_status.length?i.addiction_status.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)})):(0,o.createComponentVNode)(2,a.Box,{children:"Patient has no addictions."}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions detected."})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:i.hallucinating_status})]})})}},"tab_4")]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(15),a=n(2),i=n(10);t.MiningVendor=function(e){var t=e.state,n=t.config,c=t.data,l=n.ref,u=[].concat(c.product_records);return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"User",children:c.user&&(0,o.createComponentVNode)(2,a.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,c.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,c.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[c.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,a.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,i.classes)(["vending32x32",e.path]),null,1,{style:{"vertical-align":"middle","horizontal-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!c.user||e.price>c.user.points,content:e.price+" points",onClick:function(){return(0,r.act)(l,"purchase",{ref:e.ref})}})})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(0),r=n(3),a=n(2);t.Mint=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.inserted_materials||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.processing?"times":"power-off",content:i.processing?"Stop":"Start",selected:i.processing,onClick:function(){return n(i.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.chosen_material===e.material?"check-square":"square",selected:i.chosen_material===e.material,onClick:function(){return n("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",i.produced_coins," coins this cycle."]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(0),r=n(22),a=n(15),i=n(2);var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={hoveredItem:{},currentSearch:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setHoveredItem=function(e){this.setState({hoveredItem:e})},c.setSearchText=function(e){this.setState({currentSearch:e})},c.render=function(){var e=this,t=this.props.state,n=t.config,r=t.data,c=n.ref,u=r.compact_mode,d=r.processing_time,s=r.categories,p=void 0===s?[]:s,m=this.state,f=m.hoveredItem,h=m.currentSearch;return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d>0?"good":"bad",children:[d," Processing Time"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:h,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:u?"list":"info",content:u?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}})],4),children:h.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:p.flatMap((function(e){return e.items||[]})).filter((function(e){var t=h.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:f,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{ref:e.ref})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:p.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:u,items:r,hoveredItem:f,processing_time:d,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{ref:e.ref})}})}},n)}))})})},r}(o.Component);t.MalfunctionModulePicker=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.processing_time,c=e.compact,l=e.onBuy,u=e.onBuyMouseOver,d=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-s=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),h>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),h>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),h>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("nanite_injection")}})],4)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(0),r=n(3),a=n(2),i=function(e){var t=e.state.data,n=t.has_disk,r=t.has_program,i=t.disk;return n?r?(0,o.createComponentVNode)(2,c,{program:i}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var c=function(e){var t=e.program,n=t.name,r=t.desc,i=t.activated,c=t.use_rate,l=t.can_trigger,u=t.trigger_cost,d=t.trigger_cooldown,s=t.activation_code,p=t.deactivation_code,m=t.kill_code,f=t.trigger_code,h=t.timer_restart,C=t.timer_shutdown,b=t.timer_trigger,g=t.timer_trigger_delay,N=t.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:n,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:r}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:c}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:d})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:m}),!!l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:f})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[h," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[C," s"]}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[g," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:N.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=c;var l=function(e){var t=(0,r.useBackend)(e),n=t.act;return(t.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return n("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=l;var u=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.current_view,u=i.disk,d=i.has_program,s=i.cloud_backup,p=u&&u.can_rule||!1;if(!s)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var m=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+l,level:2,buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return n("upload_program")}}),children:m.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,c,{program:e}),!!p&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return n("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_rule",{program_id:e.id,rule_id:t.id})}}),t.display],0,t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,d=n.data,s=d.has_disk,p=d.current_view,m=d.new_backup_id;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s,onClick:function(){return c("eject")}}),children:(0,o.createComponentVNode)(2,i,{state:t})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return c("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return c("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return c("create_backup")}})],0),children:d.current_view?(0,o.createComponentVNode)(2,u,{state:t}):(0,o.createComponentVNode)(2,l,{state:t})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(0),r=n(17),a=n(3),i=n(2);t.NaniteProgramHub=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.detail_view,u=c.disk,d=c.has_disk,s=c.has_program,p=c.programs,m=void 0===p?{}:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return n("clear")}})],4),children:d?s?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Program Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:u.desc})]}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"info":"list",content:l?"Detailed":"Compact",onClick:function(){return n("toggle_details")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Sync Research",onClick:function(){return n("refresh")}})],4),children:null!==m?(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var r=e||[],a=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:a,children:l?r.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}})},e.id)}))})},t)}))(m)}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No nanite programs are currently researched."})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(0),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=c;var l=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.type,c={number:(0,o.createComponentVNode)(2,u,{act:t,extra_setting:n}),text:(0,o.createComponentVNode)(2,d,{act:t,extra_setting:n}),type:(0,o.createComponentVNode)(2,s,{act:t,extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{act:t,extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:c[i]})};t.NaniteExtraEntry=l;var u=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.min,l=n.max,u=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:i,width:"64px",minValue:c,maxValue:l,unit:u,onChange:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraNumber=u;var d=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:i,width:"200px",onInput:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraText=d;var s=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:i,width:"150px",options:c,onSelected:function(e){return t("set_extra_setting",{target_setting:r,value:e})}})};t.NaniteExtraType=s;var p=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.true_text,l=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:i?c:l,checked:i,onClick:function(){return t("set_extra_setting",{target_setting:r})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e){var t=(0,r.useBackend)(e),n=t.act,u=t.data,d=u.has_disk,s=u.has_program,p=u.name,m=u.desc,f=u.use_rate,h=u.can_trigger,C=u.trigger_cost,b=u.trigger_cooldown,g=u.activated,N=u.has_extra_settings,v=u.extra_settings,V=void 0===v?{}:v;return d?s?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:m}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:f}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:g?"power-off":"times",content:g?"Active":"Inactive",selected:g,color:"bad",bold:!0,onClick:function(){return n("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{state:e.state})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,c,{state:e.state})})]}),!!N&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){return(0,o.createComponentVNode)(2,l,{act:n,extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemote=void 0;var o=n(0),r=n(3),a=n(2);t.NaniteRemote=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.code,l=i.locked,u=i.mode,d=i.program_name,s=i.relay_code,p=i.comms,m=i.message,f=i.saved_settings,h=void 0===f?[]:f;return l?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return n("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:d,maxLength:14,width:"130px",onChange:function(e,t){return n("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return n("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"270px",onChange:function(e,t){return n("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return n("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:h.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return n("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return n("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(0),r=n(3),a=n(2);t.NotificationPreferences=function(e){var t=(0,r.useBackend)(e),n=t.act,i=(t.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return n("toggle_ignore",{key:e.key})}},e.key)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(0),r=n(3),a=n(2);t.NtnetRelay=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.enabled,l=i.dos_capacity,u=i.dos_overload,d=i.dos_crashed;return(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:c,content:c?"ENABLED":"DISABLED",onClick:function(){return n("toggle")}}),children:d?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return n("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:l,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," GQ"," / ",l," GQ"]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(0),r=n(2),a=n(3);t.NtosAiRestorer=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.nocard,l=i.error,u=i.name,d=i.ai_laws,s=i.isDead,p=i.restoring;return(0,o.createFragment)([l&&(0,o.createComponentVNode)(2,r.NoticeBox,{children:l}),(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"eject",content:u||"----------",disabled:!u,onClick:function(){return n("PRG_eject")}}),!c&&(0,o.createComponentVNode)(2,r.Section,{title:"System Status",level:2,buttons:(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,r.ProgressBar,{value:100,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,r.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return n("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,r.Section,{title:"laws",level:3,children:d.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e},e)}))})]})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(3),a=n(2);t.NtosArcade=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[i.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[i.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===i.PauseState?"#1b3622":"#471915",children:i.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:26,textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:i.BossID})})]})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,a.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:i.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",i.TicketCount]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCard=void 0;var o=n(0),r=n(3),a=n(2),i=n(164),c=n(17);t.NtosCard=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data,u=l.authenticated,d=l.regions,s=void 0===d?[]:d,p=l.access_on_card,m=void 0===p?[]:p,f=l.jobs,h=void 0===f?{}:f,C=l.id_rank,b=l.id_owner,g=l.has_id,N=l.have_printer,v=l.have_id_slot,V=l.id_name;return v?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:g&&u?(0,o.createComponentVNode)(2,a.Input,{value:b,width:"250px",onInput:function(e,t){return n("PRG_edit",{name:t})}}):b||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!N||!g,onClick:function(){return n("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Log Out":"Log In",color:u?"bad":"good",onClick:function(){n(u?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:V,onClick:function(){return n("PRG_eject")}})}),!!g&&!!u&&(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Access",children:(0,o.createComponentVNode)(2,i.AccessList,{accesses:s,selectedList:m,accessMod:function(e){return n("PRG_access",{access_target:e})},grantAll:function(){return n("PRG_grantall")},denyAll:function(){return n("PRG_denyall")},grantDep:function(e){return n("PRG_grantregion",{region:e})},denyDep:function(e){return n("PRG_denyregion",{region:e})}})}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Jobs",children:(0,o.createComponentVNode)(2,a.Section,{title:C,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return n("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return n("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:(0,c.map)((function(e,t){var r=e||[];return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:t,children:r.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return n("PRG_assign",{assign_target:e.job})}},e.job)}))},t)}))(h)})]})})]})],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(3),a=n(2);t.NtosConfiguration=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.power_usage,l=i.battery_exists,u=i.battery,d=void 0===u?{}:u,s=i.disk_size,p=i.disk_used,m=i.hardware,f=void 0===m?[]:m;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",c,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!l&&"average",children:l?(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.charge,minValue:0,maxValue:d.max,ranges:{good:[d.max/2,Infinity],average:[d.max/4,d.max/2],bad:[-Infinity,d.max/4]},children:[d.charge," / ",d.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p,minValue:0,maxValue:s,color:"good",children:[p," GQ / ",s," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return n("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(0),r=n(3),a=n(2),i=n(17);t.NtosCrewManifest=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.have_printer,u=c.manifest,d=void 0===u?{}:u;return(0,o.createComponentVNode)(2,a.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!l,onClick:function(){return n("PRG_print")}}),children:(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,a.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(d)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=t.FileTable=void 0;var o=n(0),r=n(2),a=n(3),i=function(e){var t=e.files,n=void 0===t?[]:t,a=e.usbconnected,i=e.usbmode,c=e.onUpload,l=e.onDelete,u=e.onRename;return(0,o.createComponentVNode)(2,r.Table,{children:[(0,o.createComponentVNode)(2,r.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,r.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return u(e.name,n)}})}),(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!a&&(i?(0,o.createComponentVNode)(2,r.Button,{icon:"download",tooltip:"Download",onClick:function(){return c(e.name)}}):(0,o.createComponentVNode)(2,r.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return c(e.name)}}))],0)})]},e.name)}))]})};t.FileTable=i;t.NtosFileManager=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.usbconnected,u=c.files,d=void 0===u?[]:u,s=c.usbfiles,p=void 0===s?[]:s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,i,{files:d,usbconnected:l,onUpload:function(e){return n("PRG_copytousb",{name:e})},onDelete:function(e){return n("PRG_deletefile",{name:e})},onRename:function(e,t){return n("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return n("PRG_clone",{file:e})}})}),l&&(0,o.createComponentVNode)(2,r.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:p,usbconnected:l,onUpload:function(e){return n("PRG_copyfromusb",{name:e})},onDelete:function(e){return n("PRG_deletefile",{name:e})},onRename:function(e,t){return n("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return n("PRG_clone",{file:e})}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManager=void 0;var o=n(0),r=n(3),a=n(2);t.NtosJobManager=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.authed,l=i.cooldown,u=i.slots,d=void 0===u?[]:u,s=i.prioritized,p=void 0===s?[]:s;return c?(0,o.createComponentVNode)(2,a.Section,{children:[l>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",mt:10,children:["On Cooldown: ",l,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return n("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return n("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return n("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(3),a=n(2),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list"};t.NtosMain=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.programs,u=void 0===l?[]:l,d=c.has_light,s=c.light_on,p=c.comp_light_color;return(0,o.createFragment)([!!d&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:s,onClick:function(){return n("PC_toggle_light")},children:["Flashlight: ",s?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return n("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:p})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,lineHeight:"24px",color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return n("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:3,children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{lineHeight:"24px",color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return n("PC_killprogram",{name:e.name})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(3),a=n(2);(0,n(41).createLogger)("ntos chat");t.NtosNetChat=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_admin,l=i.adminmode,u=i.authed,d=i.username,s=i.active_channel,p=i.is_operator,m=i.all_channels,f=void 0===m?[]:m,h=i.clients,C=void 0===h?[]:h,b=i.messages,g=void 0===b?[]:b,N=null!==s,v=u||l;return(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return n("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===s,color:"transparent",onClick:function(){return n("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:d+"...",currentValue:d,onCommit:function(e,t){return n("PRG_changename",{new_name:t})}}),!!c&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(l?"ON":"OFF"),color:l?"bad":"good",onClick:function(){return n("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:N&&(v?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return n("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),N&&v&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return n("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return n("PRG_leavechannel")}})],4),!!p&&u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return n("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return n("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return n("PRG_setpassword",{new_password:t})}})],4)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDos=void 0;var o=n(0),r=n(2),a=n(3);(0,n(41).createLogger)("NetDos");t.NtosNetDos=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.relays,l=void 0===c?[]:c,u=i.focus,d=i.target,s=i.speed,p=i.overload,m=i.capacity,f=i.error;if(f)return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:f}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return n("PRG_reset")}})],4);var h=function(e){for(var t="",n=p/m;t.lengthn?t+="0":t+="1";return t};return d?(0,o.createComponentVNode)(2,r.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,r.Box,{children:["CURRENT SPEED: ",s," GQ/s"]}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)})]}):(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Target",children:l.map((function(e){return(0,o.createComponentVNode)(2,r.Button,{content:e.id,selected:u===e.id,onClick:function(){return n("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return n("PRG_execute")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(3),a=n(2);t.NtosNetDownloader=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.disk_size,d=l.disk_used,s=l.downloadable_programs,p=void 0===s?[]:s,m=l.error,f=l.hacked_programs,h=void 0===f?[]:f,C=l.hackedavailable;return(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:m}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return c("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,minValue:0,maxValue:u,children:d+" GQ / "+u+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),h.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))]})],0)};var i=function(e){var t=e.program,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.disk_size,u=c.disk_used,d=c.downloadcompletion,s=c.downloading,p=c.downloadname,m=c.downloadsize,f=l-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:t.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[t.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:t.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:m,value:d})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:s||t.size>f,onClick:function(){return i("PRG_downloadfile",{filename:t.filename})}})})]}),"Compatible"!==t.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),t.size>f&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:t.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(2),a=n(3);t.NtosNetMonitor=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.ntnetrelays,l=i.ntnetstatus,u=i.config_softwaredownload,d=i.config_peertopeer,s=i.config_communication,p=i.config_systemcontrol,m=i.idsalarm,f=i.idsstatus,h=i.ntnetmaxlogs,C=i.maxlogs,b=i.minlogs,g=i.ntnetlogs,N=void 0===g?[]:g;return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:l?"power-off":"times",content:l?"ENABLED":"DISABLED",selected:l,onClick:function(){return n("toggleWireless")}}),children:c?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:c})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return n("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:d?"power-off":"times",content:d?"ENABLED":"DISABLED",selected:d,onClick:function(){return n("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return n("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return n("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:f?"power-off":"times",content:f?"ENABLED":"DISABLED",selected:f,onClick:function(){return n("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return n("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:h,minValue:b,maxValue:C,width:"39px",onChange:function(e,t){return n("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return n("purgelogs")}}),children:N.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(2),a=n(3);t.NtosRevelation=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return n("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:i.armed?"ARMED":"DISARMED",color:i.armed?"bad":"average",onClick:function(){return n("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!i.armed})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(17),a=n(69),i=n(18),c=n(3),l=n(2),u=n(37),d=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e){var t=e.state,n=(0,c.useBackend)(e),p=n.act,m=n.data,f=m.active,h=m.SM_integrity,C=m.SM_power,b=m.SM_ambienttemp,g=m.SM_ambientpressure;if(!f)return(0,o.createComponentVNode)(2,s,{state:t});var N=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),v=Math.max.apply(Math,[1].concat(N.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:C,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,i.toFixed)(C)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(b),minValue:0,maxValue:d(1e4),ranges:{teal:[-Infinity,d(80)],good:[d(80),d(373)],average:[d(373),d(1e3)],bad:[d(1e3),Infinity]},children:(0,i.toFixed)(b)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(g),minValue:0,maxValue:d(5e4),ranges:{good:[d(1),d(300)],average:[-Infinity,d(1e3)],bad:[d(1e3),+Infinity]},children:(0,i.toFixed)(g)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return p("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.Box.Forced,{height:24*N.length+"px",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:N.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,u.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,u.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:v,children:(0,i.toFixed)(e.amount,2)+"%"})},e.name)}))})})})})]})};var s=function(e){var t=(0,c.useBackend)(e),n=t.act,r=t.data.supermatters,a=void 0===r?[]:r;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return n("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:a.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return n("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWrapper=void 0;var o=n(0),r=n(3),a=n(2),i=n(117);t.NtosWrapper=function(e){var t=e.children,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.PC_batteryicon,d=l.PC_showbatteryicon,s=l.PC_batterypercent,p=l.PC_ntneticon,m=l.PC_apclinkicon,f=l.PC_stationtime,h=l.PC_programheaders,C=void 0===h?[]:h,b=l.PC_showexitprogram;return(0,o.createVNode)(1,"div","NtosWrapper",[(0,o.createVNode)(1,"div","NtosWrapper__header NtosHeader",[(0,o.createVNode)(1,"div","NtosHeader__left",[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:f}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:"NtOS"})],4),(0,o.createVNode)(1,"div","NtosHeader__right",[C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:e.icon})},e.icon)})),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:p&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:p})}),!!d&&u&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[u&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:u}),s&&s]}),m&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:m})}),!!b&&(0,o.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return c("PC_minimize")}}),!!b&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return c("PC_exit")}}),!b&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return c("PC_shutdown")}})],0)],4,{onMouseDown:function(){(0,i.refocusLayout)()}}),(0,o.createVNode)(1,"div","NtosWrapper__content",t,0)],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(10),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Box,{width:"185px",children:(0,o.createComponentVNode)(2,i.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,mb:1,content:e,textAlign:"center",fontSize:"40px",lineHeight:"50px",width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return t("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e){var t=e.state,n=(0,a.useBackend)(e),r=n.act,l=n.data,u=(l.anchored,l.disk_present,l.status1),d=l.status2;return(0,o.createComponentVNode)(2,i.Box,{m:1,children:[(0,o.createComponentVNode)(2,i.Box,{mb:1,className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,i.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Box,{className:"NuclearBomb__displayBox",children:d})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",fontSize:"24px",lineHeight:"23px",textAlign:"center",width:"43px",ml:1,mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,i.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,c,{state:t})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,width:"129px",children:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:"32px",mb:1,className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:"32px",className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,i.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(3),a=n(2);t.OperatingComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.table,l=i.surgeries,u=void 0===l?[]:l,d=i.procedures,s=void 0===d?[]:d,p=i.patient,m=void 0===p?{}:p;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Patient State",children:[!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",level:2,children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]}):"No Patient Detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"Initiated Procedures",level:2,children:s.length?s.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!i.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)})):"No Active Procedures"})]})]},"state"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Surgery Procedures",children:(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return n("sync")}}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})},"procedures")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(0),r=n(22),a=n(15),i=n(2);t.OreBox=function(e){var t=e.state,n=t.config,c=t.data,l=n.ref,u=c.materials;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Empty",onClick:function(){return(0,a.act)(l,"removeall")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(0),r=n(22),a=n(3),i=n(2);t.OreRedemptionMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,l=r.unclaimedPoints,u=r.materials,d=r.alloys,s=r.diskDesigns,p=r.hasDisk;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),l,(0,o.createComponentVNode)(2,i.Button,{ml:2,content:"Claim",disabled:0===l,onClick:function(){return n("Claim")}})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return n("diskEject")}})}),(0,o.createComponentVNode)(2,i.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return n("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"save",content:"Insert design disk",onClick:function(){return n("diskInsert")}})}),(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,i.Table,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Smelt",{id:e.id,sheets:t})}},e.id)}))})})],4)};var c=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).state={amount:1},t}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.prototype.render=function(){var e=this,t=this.state.amount,n=this.props,a=n.material,c=n.onRelease,l=Math.floor(a.amount);return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(a.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:a.value&&a.value+" cr"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:[l," sheets"]})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:t,onChange:function(t,n){return e.setState({amount:n})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:l<1,content:"Release",onClick:function(){return c(t)}})]})]})},a}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(0),r=n(17),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.has_beaker,l=r.beaker_empty,u=r.has_blood,d=r.blood,s=!c||l;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:s,onClick:function(){return n("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",content:"Empty",disabled:s,onClick:function(){return n("empty_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!c,onClick:function(){return n("eject_beaker")}})],4),children:c?l?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",children:d&&d.dna||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:d&&d.type||"Unknown"})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.is_ready;return(r.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,i.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,i.Input,{value:e.name,onChange:function(t,o){return n("rename_disease",{index:e.index,name:o})}}):e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:"Create culture bottle",disabled:!c,onClick:function(){return n("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=l;var u=function(e){var t=e.symptom,n=t.name,a=t.desc,c=t.stealth,l=t.resistance,u=t.stage_speed,d=t.transmission,s=t.level,p=t.neutered,m=(0,r.map)((function(e,t){return{desc:e,label:t}}))(t.threshold_desc||{});return(0,o.createComponentVNode)(2,i.Section,{title:n,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{size:2,children:a}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Level",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmission",children:d})]})})]}),m.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var d=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.resistances||[];return(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:c.length>0?(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!r.is_ready,onClick:function(){return n("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=d;t.Pandemic=function(e){var t=(0,a.useBackend)(e).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),!!t.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{state:e.state}),(0,o.createComponentVNode)(2,d,{state:e.state})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(17),a=n(3),i=n(2),c=function(e){var t=e.craftables,n=void 0===t?[]:t,r=(0,a.useBackend)(e),c=r.act,l=r.data,u=l.craftability,d=void 0===u?{}:u,s=l.display_compact,p=l.display_craftable_only;return n.map((function(e){return p&&!d[e.ref]?null:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,className:"candystripe",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],tooltip:e.tool_text&&"Tools needed: "+e.tool_text,tooltipPosition:"left",onClick:function(){return c("make",{recipe:e.ref})}}),children:e.req_text},e.name):(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],onClick:function(){return c("make",{recipe:e.ref})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.req_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Required",children:e.req_text}),!!e.catalyst_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Catalyst",children:e.catalyst_text}),!!e.tool_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))};t.PersonalCrafting=function(e){var t=e.state,n=(0,a.useBackend)(e),l=n.act,u=n.data,d=u.busy,s=u.display_craftable_only,p=u.display_compact,m=(0,r.map)((function(e,t){return{category:t,subcategory:e,hasSubcats:"has_subcats"in e,firstSubcatName:Object.keys(e).find((function(e){return"has_subcats"!==e}))}}))(u.crafting_recipes||{}),f=!!d&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"40px",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Box,{mt:30,children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Crafting..."]})});return(0,o.createFragment)([f,(0,o.createComponentVNode)(2,i.Section,{title:"Personal Crafting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:p?"check-square-o":"square-o",content:"Compact",selected:p,onClick:function(){return l("toggle_compact")}}),(0,o.createComponentVNode)(2,i.Button,{icon:s?"check-square-o":"square-o",content:"Craftable Only",selected:s,onClick:function(){return l("toggle_recipes")}})],4),children:(0,o.createComponentVNode)(2,i.Tabs,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.category,onClick:function(){return l("set_category",{category:e.category,subcategory:e.firstSubcatName})},children:function(){return!e.hasSubcats&&(0,o.createComponentVNode)(2,c,{craftables:e.subcategory,state:t})||(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,n){if("has_subcats"!==n)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n,onClick:function(){return l("set_category",{subcategory:n})},children:function(){return(0,o.createComponentVNode)(2,c,{craftables:e,state:t})}})}))(e.subcategory)})}},e.category)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(0),r=n(3),a=n(2);t.PortableGenerator=function(e){var t,n=(0,r.useBackend)(e),i=n.act,c=n.data;return t=c.stack_percent>50?"good":c.stack_percent>15?"average":"bad",(0,o.createFragment)([!c.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!c.ready_to_boot,children:c.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:c.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t,children:c.sheets}),c.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:c.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:c.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):c.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:c.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:c.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:c.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!c.connected&&"bad",children:c.connected?c.power_available:"Unconnected"})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=t.PortablePump=t.PortableBasicInfo=void 0;var o=n(0),r=n(3),a=n(2),i=n(37),c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.connected,l=i.holding,u=i.on,d=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:c?"good":"average",children:c?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return n("eject")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)};t.PortableBasicInfo=c;t.PortablePump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.direction,u=(i.holding,i.target_pressure),d=i.default_pressure,s=i.min_pressure,p=i.max_pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-in-alt":"sign-out-alt",content:l?"In":"Out",selected:l,onClick:function(){return n("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,unit:"kPa",width:"75px",minValue:s,maxValue:p,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:u===s,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:u===d,onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:u===p,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})],4)};t.PortableScrubber=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data.filter_types||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return n("toggle_filter",{val:e.gas_id})}},e.id)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PowerMonitor=void 0;var o=n(0),r=n(17),a=n(69),i=n(18),c=n(10),l=n(2);var u=5e5,d=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)},s=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={sortByField:null},t}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=this,t=this.props.state.data,n=t.history,c=this.state.sortByField,s=n.supply[n.supply.length-1]||0,f=n.demand[n.demand.length-1]||0,h=n.supply.map((function(e,t){return[t,e]})),C=n.demand.map((function(e,t){return[t,e]})),b=Math.max.apply(Math,[u].concat(n.supply,n.demand)),g=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===c&&(0,r.sortBy)((function(e){return e.name})),"charge"===c&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===c&&(0,r.sortBy)((function(e){return-d(e.load)}),(function(e){return-parseFloat(e.load)}))])(t.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"200px",children:(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s,minValue:0,maxValue:b,color:"teal",content:(0,i.toFixed)(s/1e3)+" kW"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:f,minValue:0,maxValue:b,color:"pink",content:(0,i.toFixed)(f/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:h,rangeX:[0,h.length-1],rangeY:[0,b],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:C,rangeX:[0,C.length-1],rangeY:[0,b],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,l.Section,{children:[(0,o.createComponentVNode)(2,l.Box,{mb:1,children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===c,content:"Name",onClick:function(){return e.setState({sortByField:"name"!==c&&"name"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===c,content:"Charge",onClick:function(){return e.setState({sortByField:"charge"!==c&&"charge"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===c,content:"Draw",onClick:function(){return e.setState({sortByField:"draw"!==c&&"draw"})}})]}),(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),g.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,p,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.env}),2)],4,null,e.id)}))]})]})],4)},c}(o.Component);t.PowerMonitor=s;var p=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,l.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,i.toFixed)(n)+"%"})],4)};p.defaultHooks=c.pureComponentHooks;var m=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,l.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};m.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(0),r=n(3),a=n(2);t.ProximitySensor=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.minutes,l=i.seconds,u=i.timing,d=i.scanning,s=i.sensitivity;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"unlock",content:d?"Armed":"Not Armed",selected:d,onClick:function(){return n("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:d,onClick:function(){return n("sense",{range:-1})}})," ",String(s).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:d,onClick:function(){return n("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:u?"Stop":"Start",selected:u,disabled:d,onClick:function(){return n("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:d||u,onClick:function(){return n("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:d||u,onClick:function(){return n("input",{adjust:-1})}})," ",String(c).padStart(2,"0"),":",String(l).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:d||u,onClick:function(){return n("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:d||u,onClick:function(){return n("input",{adjust:30})}})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=n(17),a=n(18),i=n(3),c=n(2),l=n(37);t.Radio=function(e){var t=(0,i.useBackend)(e),n=t.act,u=t.data,d=u.freqlock,s=u.frequency,p=u.minFrequency,m=u.maxFrequency,f=u.listening,h=u.broadcasting,C=u.command,b=u.useCommand,g=u.subspace,N=u.subspaceSwitchable,v=l.RADIO_CHANNELS.find((function(e){return e.freq===s})),V=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(u.channels);return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[d&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(s/10,1)+" kHz"})||(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:p/10,maxValue:m/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return n("frequency",{adjust:t-s/10})}}),v&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:v.color,ml:2,children:["[",v.name,"]"]})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:f?"volume-up":"volume-mute",selected:f,onClick:function(){return n("listen")}}),(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:h?"microphone":"microphone-slash",selected:h,onClick:function(){return n("broadcast")}}),!!C&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:b,content:"High volume "+(b?"ON":"OFF"),onClick:function(){return n("command")}}),!!N&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return n("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channels",children:[0===V.length&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),V.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return n("channel",{channel:e.name})}})},e.name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(0),r=n(3),a=n(2);t.RadioactiveMicrolaser=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.irradiate,l=i.stealth,u=i.scanmode,d=i.intensity,s=i.wavelength,p=i.on_cooldown,m=i.cooldown;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:p?"average":"good",children:p?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,onClick:function(){return n("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"eye-slash":"eye",content:l?"On":"Off",disabled:!c,selected:l,onClick:function(){return n("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"mortar-pestle":"heartbeat",content:u?"Scan Reagents":"Scan Health",disabled:c&&l,onClick:function(){return n("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(d),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return n("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(s),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return n("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:m})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(0),r=n(10),a=n(3),i=n(2),c=["Atmospherics","Disposals","Transit Tubes"],l={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},d=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e){var t=(0,a.useBackend)(e),n=t.act,s=t.data,p=s.category,m=s.categories,f=void 0===m?[]:m,h=s.selected_color,C=s.piping_layer,b=s.mode,g=s.preview_rows.flatMap((function(e){return e.previews}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Category",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{selected:p===t,icon:l[e],color:"transparent",content:e,onClick:function(){return n("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Modes",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:b&e.bitmask,content:e.name,onClick:function(){return n("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,width:"64px",color:u[h],content:h}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:u[e],onClick:function(){return n("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,i.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,i.Section,{children:[0===p&&(0,o.createComponentVNode)(2,i.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:e===C,content:"Layer "+e,onClick:function(){return n("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,i.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return n("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,i.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:l[e.cat_name],label:e.cat_name,children:function(){return e.recipes.map((function(t){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:t.selected,content:t.pipe_name,title:t.pipe_name,onClick:function(){return n("pipe_type",{pipe_type:t.pipe_index,category:e.cat_name})}},t.pipe_index)}))}},e.cat_name)}))})})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(0),r=n(10),a=n(3),i=n(2),c=n(41);n(15);(0,c.createLogger)("Roulette");var l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},u=function(e){var t=e.number,n=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Button,{bold:!0,content:t,color:l(t),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:t})}})};t.RouletteNumberButton=u;var d=function(e){var t=e.state,n=(0,a.useBackend)(e).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,u,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,u,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,u,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=d;var s=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={customBet:500},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=c.prototype;return u.setCustomBet=function(e){this.setState({customBet:e})},u.render=function(){var e=this,t=(0,a.useBackend)(this.props),n=t.act,c=t.data,u=c.BetType;return u.startsWith("s")&&(u=u.substring(1,u.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(c.LastSpin)]),c.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[c.BetAmount," cr on ",u]}),(0,o.createComponentVNode)(2,i.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return n("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return n("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return n("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return n("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return n("ChangeBetAmount",{amount:e.state.customBet})}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,i.NumberInput,{value:this.state.customBet,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(t,n){return e.setCustomBet(n)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:c.HouseBalance?c.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:c.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return n("anchor")}}),2)],4)],4)},c}(o.Component);t.RouletteBetTable=s;t.Roulette=function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{state:e.state}),(0,o.createComponentVNode)(2,s,{state:e.state})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(3),a=n(2),i=n(118);t.SatelliteControl=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.satellites||[];return(0,o.createFragment)([c.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.meteor_shield_coverage/c.meteor_shield_coverage_max,content:100*c.meteor_shield_coverage/c.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return n("toggle",{id:e.id})}},e.id)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(0),r=n(3),a=n(2),i=n(70),c=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],l=[{name:"Human",value:"human"},{name:"lizard",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e){var t=e.state,n=(0,r.useBackend)(e),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{locked:c.locked,onLockedStatusChange:function(){return a("toggle_lock")}}),!c.locked&&(0,o.createComponentVNode)(2,s,{state:t})],0)};var d={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return m}},Guns:{title:"Scanner Mode: Guns",component:function(){return f}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return h}},Disease:{title:"Scanner Mode: Disease",component:function(){return C}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return g}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return N}}},s=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data.scan_mode,l=d[c]||d.off,u=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==c&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return i("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},p=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return t("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return t("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return t("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return t("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return t("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return t("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return t("set_mode",{new_mode:"Nanites"})}})]})],4)},m=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},f=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},h=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},C=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,l=n.data,u=l.reverse,d=l.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",u?"does not have":"has"," ","a disease equal or worse than ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===d,content:e,onClick:function(){return i("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},b=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,u=c.reverse,d=c.target_species,s=l.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",u?"not":""," ","of the ",s.name," species.","zombie"===d&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},g=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,d=c.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},N=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,u=c.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return i("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v,{state:t})],4)},v=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return n("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(0),r=n(17),a=n(3),i=n(2);t.ShuttleManipulator=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.shuttles||[],u=c.templates||{},d=c.selected||{},s=c.existing_shuttle||{};return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Status",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"JMP",onClick:function(){return n("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return n("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,i.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return n("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})}},"status"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Templates",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:(0,r.map)((function(e,t){var r=e.templates||[];return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.port_id,children:r.map((function(e){var t=e.shuttle_id===d.shuttle_id;return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return n("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))},t)}))(u)})})}},"templates"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Modification",children:(0,o.createComponentVNode)(2,i.Section,{children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:d.name,children:(!!d.description||!!d.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!d.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:d.description}),!!d.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:d.admin_notes})]})}),s?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: "+s.name,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Jump To",onClick:function(){return n("jump_to",{type:"mobile",id:s.id})}}),children:[s.status,!!s.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),s.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Preview",onClick:function(){return n("preview",{shuttle_id:d.shuttle_id})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Load",color:"bad",onClick:function(){return n("load",{shuttle_id:d.shuttle_id})}})]})],0):"No shuttle selected"})},"modification")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(0),r=n(2),a=n(3),i=n(18);t.Signaler=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.code,u=c.frequency,d=c.minFrequency,s=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:d/10,maxValue:s/10,value:u/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:l,width:13,onDrag:function(e,t){return n("code",{code:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return n("signal")}})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(3),a=n(2);t.Sleeper=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.open,l=i.occupant,u=void 0===l?{}:l,d=i.occupied,s=i.cell,p=void 0===s?{}:s,m=(i.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:u.name?u.name:"No Occupant",minHeight:"210px",buttons:!!u.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:u.statstate,children:u.stat}),children:!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.health,minValue:u.minHealth,maxValue:u.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u[e.type],minValue:0,maxValue:u.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:u.cloneLoss?"bad":"good",children:u.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:u.brainLoss?"bad":"good",children:u.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c?"door-open":"door-closed",content:c?"Open":"Closed",onClick:function(){return n("door")}}),children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!(d&&e.allowed&&p.charge>p.poweruse),width:"110px",onClick:function(){return n("inject",{chem:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"50px",children:!!p&&(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,content:p.charge/10+" units",minValue:0,maxValue:p.maxCharge})})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(0),r=n(3),a=n(2),i=function(e){var t=e.body,n=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t.htmlcolor,children:t.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:{owner:"You Are Here",stranger:"Occupied",available:"Swap"}[t.occupied],selected:"owner"===t.occupied,color:"stranger"===t.occupied&&"bad",onClick:function(){return n()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:{Dead:"bad",Unconscious:"average",Conscious:"good"}[t.status],children:t.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:t.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:t.area})]})})};t.BodyEntry=i;t.SlimeBodySwapper=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data.bodies,l=void 0===c?[]:c;return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i,{body:e,swapFunc:function(){return n("swap",{ref:e.ref})}},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(17),a=n(3),i=n(2);t.SmartVend=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:!!c.isdryer&&(0,o.createComponentVNode)(2,i.Button,{icon:c.drying?"stop":"tint",onClick:function(){return n("Dry")},children:c.drying?"Stop drying":"Dry"}),children:0===c.contents.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Unfortunately, this ",c.name," is empty."]})||(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"center",children:c.verb?c.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.Button,{content:"One",disabled:e.amount<1,onClick:function(){return n("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return n("Release",{name:e.name})}})]})]},t)}))(c.contents)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(3),a=n(2);t.Smes=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return t=l.capacityPercent>=100?"good":l.inputting?"average":"bad",n=l.outputting?"good":l.charge>0?"average":"bad",(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*l.capacityPercent,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.inputAttempt?"sync-alt":"times",selected:l.inputAttempt,onClick:function(){return c("tryinput")},children:l.inputAttempt?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:t,children:l.capacityPercent>=100?"Fully Charged":l.inputting?"Charging":"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.inputLevel/l.inputLevelMax,content:l.inputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Input",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.inputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.inputLevelMax/1e3,onChange:function(e,t){return c("input",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:l.inputAvailable})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.outputAttempt?"power-off":"times",selected:l.outputAttempt,onClick:function(){return c("tryoutput")},children:l.outputAttempt?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:n,children:l.outputting?"Sending":l.charge>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.outputLevel/l.outputLevelMax,content:l.outputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.outputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.outputLevelMax/1e3,onChange:function(e,t){return c("output",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:l.outputUsed})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(0),r=n(3),a=n(2);t.SmokeMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.TankContents,l=(i.isTankLoaded,i.TankCurrentVolume),u=i.TankMaxVolume,d=i.active,s=i.setting,p=(i.screen,i.maxSetting),m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",selected:d,content:d?"On":"Off",onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/u,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:l||0})," / "+u]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:s===e,icon:"plus",content:3*e,disabled:m0?"good":"bad",children:m})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:l,content:c+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===p,onClick:function(){return n("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===p,onClick:function(){return n("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===p,disabled:!f,onClick:function(){return n("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===p||1===p)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:u,onDrag:function(e,t){return n("azimuth",{value:t})}}),1===p&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-s-.01,maxValue:s+.01,value:d,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return n("azimuth_rate",{value:t})}}),2===p&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[u+" \xb0"," (auto)"]})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(3),a=n(2);t.SpaceHeater=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!i.hasPowercell||!i.open,onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,disabled:!i.hasPowercell,onClick:function(){return n("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!i.hasPowercell&&"bad",children:i.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.powerLevel/100,content:i.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(i.targetTemp-i.currentTemp)>50?"bad":Math.abs(i.targetTemp-i.currentTemp)>20?"average":"good",children:[i.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:i.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.targetTemp),width:"65px",unit:"\xb0C",minValue:i.minTemp,maxValue:i.maxTemp,onChange:function(e,t){return n("target",{target:t})}})||i.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:i.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===i.mode,onClick:function(){return n("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===i.mode,onClick:function(){return n("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===i.mode,onClick:function(){return n("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(3),a=n(2);t.SpawnersMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.spawners||[];return(0,o.createComponentVNode)(2,a.Section,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return n("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return n("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsole=void 0;var o=n(0),r=n(3),a=n(2);t.StationAlertConsole=function(e){var t=(0,r.useBackend)(e).data.alarms||[],n=t.Fire||[],i=t.Atmosphere||[],c=t.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===n.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),n.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(3),a=n(2);t.SuitStorageUnit=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.locked,l=i.open,u=i.safeties,d=i.uv_active,s=i.occupied,p=i.suit,m=i.helmet,f=i.mask,h=i.storage;return(0,o.createFragment)([!(!s||!u)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.Button,{icon:c?"unlock":"lock",content:c?"Unlock":"Lock",onClick:function(){return n("lock")}}),!c&&(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-out-alt":"sign-in-alt",content:l?"Close":"Open",onClick:function(){return n("door")}})],0),children:c&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return n("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return n("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:f?"square":"square-o",content:f||"Empty",disabled:!f,onClick:function(){return n("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return n("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&u,textAlign:"center",onClick:function(){return n("uv")}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(0),r=n(3),a=n(2);t.Tank=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.tankPressure/1013,content:i.tankPressure+" kPa",ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:i.ReleasePressure===i.minReleasePressure,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.releasePressure),width:"65px",unit:"kPa",minValue:i.minReleasePressure,maxValue:i.maxReleasePressure,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:i.ReleasePressure===i.maxReleasePressure,onClick:function(){return n("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"",disabled:i.ReleasePressure===i.defaultReleasePressure,onClick:function(){return n("pressure",{pressure:"reset"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(0),r=n(3),a=n(2);t.TankDispenser=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plasma",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.plasma?"square":"square-o",content:"Dispense",disabled:!i.plasma,onClick:function(){return n("plasma")}}),children:i.plasma}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.oxygen?"square":"square-o",content:"Dispense",disabled:!i.oxygen,onClick:function(){return n("oxygen")}}),children:i.oxygen})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(0),r=n(3),a=n(2);t.Teleporter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.calibrated,l=i.calibrating,u=i.power_station,d=i.regime_set,s=i.teleporter_hub,p=i.target;return(0,o.createComponentVNode)(2,a.Section,{children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No power station linked."})||!s&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No hub linked."})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Regime",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Change Regime",onClick:function(){return n("regimeset")}}),children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Set Target",onClick:function(){return n("settarget")}}),children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Calibration",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Calibrate Hub",onClick:function(){return n("calibrate")}}),children:l&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"In Progress"})||c&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Optimal"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Sub-Optimal"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ThermoMachine=void 0;var o=n(0),r=n(18),a=n(3),i=n(2);t.ThermoMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.temperature,format:function(e){return(0,r.toFixed)(e,2)}})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.pressure,format:function(e){return(0,r.toFixed)(e,2)}})," kPa"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:Math.round(c.target),unit:"K",width:"62px",minValue:Math.round(c.min),maxValue:Math.round(c.max),step:5,stepPixelSize:3,onDrag:function(e,t){return n("target",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:c.target===c.min,title:"Minimum temperature",onClick:function(){return n("target",{target:c.min})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",disabled:c.target===c.initial,title:"Room Temperature",onClick:function(){return n("target",{target:c.initial})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:c.target===c.max,title:"Maximum Temperature",onClick:function(){return n("target",{target:c.max})}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Timer=void 0;var o=n(0),r=n(3),a=n(2);t.Timer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.minutes,l=i.seconds,u=i.timing,d=i.loop;return(0,o.createComponentVNode)(2,a.Section,{title:"Timing Unit",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:d?"Repeating":"Repeat",selected:d,onClick:function(){return n("repeat")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:u?"Stop":"Start",selected:u,onClick:function(){return n("time")}})],4),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:u,onClick:function(){return n("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:u,onClick:function(){return n("input",{adjust:-1})}})," ",String(c).padStart(2,"0"),":",String(l).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:u,onClick:function(){return n("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:u,onClick:function(){return n("input",{adjust:30})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.TransferValve=void 0;var o=n(0),r=n(3),a=n(2);t.TransferValve=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.tank_one,l=i.tank_two,u=i.attached_device,d=i.valve;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Valve Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Open":"Closed",disabled:!c||!l,onClick:function(){return n("toggle")}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Valve Attachment",buttons:(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"30px",icon:"cog",disabled:!u,onClick:function(){return n("device")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:u,disabled:!u,onClick:function(){return n("remove_device")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert Assembly"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment One",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:c,disabled:!c,onClick:function(){return n("tankone")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert Tank"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment Two",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:l?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:l,disabled:!l,onClick:function(){return n("tanktwo")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert Tank"})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.TurbineComputer=void 0;var o=n(0),r=n(3),a=n(2);t.TurbineComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=Boolean(i.compressor&&!i.compressor_broke&&i.turbine&&!i.turbine_broke);return(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:i.online?"power-off":"times",content:i.online?"Online":"Offline",selected:i.online,disabled:!c,onClick:function(){return n("toggle_power")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reconnect",onClick:function(){return n("reconnect")}})],4),children:!c&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Compressor Status",color:!i.compressor||i.compressor_broke?"bad":"good",children:i.compressor_broke?i.compressor?"Offline":"Missing":"Online"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Status",color:!i.turbine||i.turbine_broke?"bad":"good",children:i.turbine_broke?i.turbine?"Offline":"Missing":"Online"})]})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Speed",children:[i.rpm," RPM"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Temp",children:[i.temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Generated Power",children:i.power})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TurboLift=void 0;var o=n(0),r=n(15),a=n(2);t.TurboLift=function(e){var t,n=e.state,i=n.config,c=n.data,l=i.ref;return Object.values(c.decks).forEach((function(e){e.z===c.current&&(t=e.deck)})),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.online?t?"Currently at deck "+t:"Unable to determine current deck.":"This lift is currently offline. Please contact a Nanotrasen lift repair technician."}),(0,o.createComponentVNode)(2,a.Section,{title:"Lift panel",children:Object.keys(c.decks).map((function(e){var t=c.decks[e];return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:c.current===t.z?"blue":t.queued?"good":"normal",content:"Deck "+t.deck+": "+t.name,bold:c.current===t.z,disabled:!c.online,onClick:function(){c.current!==t.z&&(t.queued||(0,r.act)(l,"goto",{deck:e}))}},e)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Uplink=void 0;var o=n(0),r=n(22),a=n(15),i=n(2);var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={hoveredItem:{},currentSearch:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setHoveredItem=function(e){this.setState({hoveredItem:e})},c.setSearchText=function(e){this.setState({currentSearch:e})},c.render=function(){var e=this,t=this.props.state,n=t.config,r=t.data,c=n.ref,u=r.compact_mode,d=r.lockable,s=r.telecrystals,p=r.categories,m=void 0===p?[]:p,f=this.state,h=f.hoveredItem,C=f.currentSearch;return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:s>0?"good":"bad",children:[s," TC"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:C,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:u?"list":"info",content:u?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}}),!!d&&(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return(0,a.act)(c,"lock")}})],0),children:C.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:m.flatMap((function(e){return e.items||[]})).filter((function(e){var t=C.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:h,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:m.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:u,items:r,hoveredItem:h,telecrystals:s,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}})}},n)}))})})},r}(o.Component);t.Uplink=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.telecrystals,c=e.compact,l=e.onBuy,u=e.onBuyMouseOver,d=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-sl.user.cash),content:t?"FREE":e.price+" cr",onClick:function(){return(0,r.act)(u,"vend",{ref:e.ref})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var o=n(0),r=n(3),a=n(2);t.Wires=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.wires||[],l=i.status||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.color,labelColor:e.color,color:e.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return n("cut",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Pulse",onClick:function(){return n("pulse",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return n("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)("("),e.wire,(0,o.createTextVNode)(")")],0)},e.color)}))})}),!!l.length&&(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractor=t.FakeTerminal=void 0;var o=n(0),r=n(2),a=n(3);var i=function(e){var t,n;function a(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=a.prototype;return i.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},i.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},i.componentWillUnmount=function(){clearTimeout(this.timer)},i.render=function(){return(0,o.createComponentVNode)(2,r.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},a}(o.Component);t.FakeTerminal=i;t.SyndContractor=function(e){var t=(0,a.useBackend)(e),n=t.data,c=t.act,u=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],d=!!n.error&&(0,o.createComponentVNode)(2,r.Dimmer,{children:(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"red",minHeight:"150px",mt:30,ml:15,mr:15,children:(0,o.createComponentVNode)(2,r.Table,{m:1,children:(0,o.createComponentVNode)(2,r.Table.Row,{children:[(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,fontSize:"100px",children:(0,o.createComponentVNode)(2,r.Icon,{name:"exclamation-triangle",mt:4,ml:2})}),(0,o.createComponentVNode)(2,r.Table.Cell,{verticalAlign:"top",textAlign:"center",children:[(0,o.createComponentVNode)(2,r.Box,{m:1,textAlign:"left",width:"100%",minHeight:"110px",children:n.error}),(0,o.createComponentVNode)(2,r.Button,{content:"Dismiss",onClick:function(){return c("PRG_clear_error")}})]})]})})})});return n.logged_in?n.logged_in&&n.first_load?(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,i,{allMessages:u,finishedTimeout:3e3,onFinished:function(){return c("PRG_set_first_load_finished")}})}):n.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,i,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return c("PRG_toggle_info")}})],4):(0,o.createFragment)([d,(0,o.createComponentVNode)(2,l,{state:e.state})],0):(0,o.createComponentVNode)(2,r.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,r.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,r.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return c("PRG_login")}})}),!!n.error&&(0,o.createComponentVNode)(2,r.NoticeBox,{children:n.error})]})};var c=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,r.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,r.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return n("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,r.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"TC Availible",buttons:(0,o.createComponentVNode)(2,r.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return n("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,l=i.contractor_hub_items||[],u=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,r.Tabs,{children:[(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:"Contracts",children:(0,o.createComponentVNode)(2,r.Section,{title:"Availible Contracts",buttons:(0,o.createComponentVNode)(2,r.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return n("PRG_call_extraction")}}),children:u.map((function(e){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,r.Section,{title:e.target+" ("+e.target_rank+")",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,r.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return n("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,r.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,r.Box,{children:e.dropoff})]})]})},e.target)}))})}),(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:"Uplink",children:(0,o.createComponentVNode)(2,r.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",a=-1!==e.limited;return(0,o.createComponentVNode)(2,r.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([a&&(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,r.Button,{content:"Purchase",disabled:i.contract_rep1?r-1:0),i=1;i1?t-1:0),o=1;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var o=n(0),r=n(9),a=n(398),i=n(15),c=n(39),l=n(19);function d(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var u=(0,c.createLogger)("ByondUi"),s=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),C=this.state.viewBox,b=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),i=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],i[0]=n[1]),o!==undefined&&(a[1]=o[0],i[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,i,t)}))(e)}(i,C,c,l);if(b.length>0){var g=b[0],N=b[b.length-1];b.push([C[0]+f,N[1]]),b.push([C[0]+f,-f]),b.push([-f,-f]),b.push([-f,g[1]])}var v=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createComponentVNode)(2,r.Box,{mb:1,children:[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:d}))),2),u&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",u,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:i})]})},i}(o.Component);t.Collapsible=i},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(9),a=n(19);var i=function(e){var t=e.color,n=e.content,i=e.className,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["color","content","className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["ColorBox",i]),color:n?null:"transparent",backgroundColor:t,content:n||"."},c)))};t.ColorBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var o=n(0),r=n(19);t.Dimmer=function(e){var t=e.style,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Box,Object.assign({style:Object.assign({position:"absolute",top:0,bottom:0,left:0,right:0,"background-color":"rgba(0, 0, 0, 0.75)","z-index":1},t)},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(9),a=n(19),i=n(89);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=l.prototype;return d.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},d.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},d.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},d.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(n){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},d.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,d=t.over,u=t.width,s=(t.onClick,t.selected,c(t,["color","over","width","onClick","selected"])),p=s.className,m=c(s,["className"]),f=d?!this.state.open:this.state.open,h=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)(["Dropdown__menu",d&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:u}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:u,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,p])},m,{onClick:function(t){e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,i.Icon,{name:f?"chevron-up":"chevron-down"}),2)]}))),h],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var o=n(0),r=n(9),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.className,n=e.direction,o=e.wrap,a=e.align,c=e.justify,l=e.spacing,d=void 0===l?0:l,u=i(e,["className","direction","wrap","align","justify","spacing"]);return Object.assign({className:(0,r.classes)(["Flex",d>0&&"Flex--spacing--"+d,t]),style:Object.assign({},u.style,{"flex-direction":n,"flex-wrap":o,"align-items":a,"justify-content":c})},u)};t.computeFlexProps=c;var l=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=l,l.defaultHooks=r.pureComponentHooks;var d=function(e){var t=e.className,n=e.grow,o=e.order,a=e.align,c=i(e,["className","grow","order","align"]);return Object.assign({className:(0,r.classes)(["Flex__item",t]),style:Object.assign({},c.style,{"flex-grow":n,order:o,"align-self":a})},c)};t.computeFlexItemProps=d;var u=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},d(e))))};t.FlexItem=u,u.defaultHooks=r.pureComponentHooks,l.Item=u},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(0),r=n(164),a=n(9);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table,Object.assign({},n,{children:(0,o.createComponentVNode)(2,r.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=a.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,a=e.style,c=i(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},a)},c)))};t.GridColumn=l,c.defaultHooks=a.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(9),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=c(t.props.value),void e.target.blur()):void 0},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=l.prototype;return d.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=c(e))},d.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=c(r))},d.setEditing=function(e){this.setState({editing:e})},d.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,c=i(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),l=c.className,d=c.fluid,u=i(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",d&&"Input--fluid",l])},u,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),(0,o.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},l}(o.Component);t.Input=l},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(9),a=n(19);var i=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",t])},n)))};t.NoticeBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var o=n(0),r=n(18),a=n(9),i=n(15),c=n(162),l=n(19);var d=function(e){var t,n;function d(t){var n;n=e.call(this,t)||this;var a=t.value;return n.inputRef=(0,o.createRef)(),n.state={value:a,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,o=t.dragging,r=t.value,a=n.props.onDrag;o&&a&&a(e,r)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,o=t.minValue,a=t.maxValue,i=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),l=n.origin-e.screenY;if(t.dragging){var d=Number.isFinite(o)?o%i:0;n.internalValue=(0,r.clamp)(n.internalValue+l*i/c,o-i,a+i),n.value=(0,r.clamp)(n.internalValue-n.internalValue%i+d,o,a),n.origin=e.screenY}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,o=t.onChange,r=t.onDrag,a=n.state,i=a.dragging,c=a.value,l=a.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!i,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),i)n.suppressFlicker(),o&&o(e,c),r&&r(e,c);else if(n.inputRef){var d=n.inputRef.current;d.value=l;try{d.focus(),d.select()}catch(u){}}},n}return n=e,(t=d).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,d.prototype.render=function(){var e=this,t=this.state,n=t.dragging,d=t.editing,u=t.value,s=t.suppressingFlicker,p=this.props,m=p.className,f=p.fluid,h=p.animated,C=p.value,b=p.unit,g=p.minValue,N=p.maxValue,v=p.height,V=p.width,y=p.lineHeight,_=p.fontSize,k=p.format,x=p.onChange,L=p.onDrag,B=C;(n||s)&&(B=u);var w=function(e){return(0,o.createVNode)(1,"div","NumberInput__content",e+(b?" "+b:""),0,{unselectable:i.tridentVersion<=4})},S=h&&!n&&!s&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:B,format:k,children:w})||w(k?k(B):B);return(0,o.createComponentVNode)(2,l.Box,{className:(0,a.classes)(["NumberInput",f&&"NumberInput--fluid",m]),minWidth:V,minHeight:v,lineHeight:y,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,o.createVNode)(1,"div","NumberInput__barContainer",(0,o.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,r.clamp)((B-g)/(N-g)*100,0,100)+"%"}}),2),S,(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:d?undefined:"none",height:v,"line-height":y,"font-size":_},onBlur:function(t){if(d){var n=(0,r.clamp)(t.target.value,g,N);e.setState({editing:!1,value:n}),e.suppressFlicker(),x&&x(t,n),L&&L(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,r.clamp)(t.target.value,g,N);return e.setState({editing:!1,value:n}),e.suppressFlicker(),x&&x(t,n),void(L&&L(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},d}(o.Component);t.NumberInput=d,d.defaultHooks=a.pureComponentHooks,d.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(0),r=n(9),a=n(18),i=function(e){var t=e.value,n=e.minValue,i=void 0===n?0:n,c=e.maxValue,l=void 0===c?1:c,d=e.ranges,u=void 0===d?{}:d,s=e.content,p=e.children,m=(t-i)/(l-i),f=s!==undefined||p!==undefined,h=e.color;if(!h)for(var C=0,b=Object.keys(u);C=N[0]&&t<=N[1]){h=g;break}}return h||(h="default"),(0,o.createVNode)(1,"div",(0,r.classes)(["ProgressBar","ProgressBar--color--"+h]),[(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,a.clamp)(m,0,1)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",[f&&s,f&&p,!f&&(0,a.toFixed)(100*m)+"%"],0)],4)};t.ProgressBar=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(9),a=n(19);var i=function(e){var t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,l=e.buttons,d=e.content,u=e.children,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","children"]),p=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),m=!(0,r.isFalsy)(d)||!(0,r.isFalsy)(u);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+c,t])},s,{children:[p&&(0,o.createVNode)(1,"div","Section__title",[(0,o.createVNode)(1,"span","Section__titleText",n,0),(0,o.createVNode)(1,"div","Section__buttons",l,0)],4),m&&(0,o.createVNode)(1,"div","Section__content",[d,u],0)]})))};t.Section=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tab=t.Tabs=void 0;var o=n(0),r=n(9),a=n(19),i=n(119);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={activeTabKey:null},n}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=l.prototype;return d.getActiveTab=function(){var e=this.state,t=this.props,n=(0,r.normalizeChildren)(t.children);!function(e){var t=e,n=Array.isArray(t),o=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(o>=t.length)break;r=t[o++]}else{if((o=t.next()).done)break;r=o.value}var a=r;if(!a.props||"Tab"!==a.props.__type__){var i=JSON.stringify(a,null,2);throw new Error(" only accepts children of type .This is what we received: "+i)}}}(n);var o=t.activeTab||e.activeTabKey,a=n.find((function(e){return(e.key||e.props.label)===o}));return a||(a=n[0],o=a&&(a.key||a.props.label)),{tabs:n,activeTab:a,activeTabKey:o}},d.render=function(){var e=this,t=this.props,n=t.className,l=t.vertical,d=t.altSelection,u=(t.children,c(t,["className","vertical","altSelection","children"])),s=this.getActiveTab(),p=s.tabs,m=s.activeTab,f=s.activeTabKey,h=null;return m&&(h=m.props.content||m.props.children),"function"==typeof h&&(h=h(f)),(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Tabs",l&&"Tabs--vertical",n])},u,{children:[(0,o.createVNode)(1,"div","Tabs__tabBox",p.map((function(t){var n=t.props,a=n.className,u=n.label,s=(n.content,n.children,n.onClick),p=n.highlight,m=c(n,["className","label","content","children","onClick","highlight"]),h=t.key||t.props.label,C=t.active||h===f,b="Button--altSelected"+(l?"--right":"--bottom");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",C&&"Tabs__tab--active",p&&!C&&"color-yellow",d&&C&&b,a]),selected:!d&&C,color:"transparent",onClick:function(n){e.setState({activeTabKey:h}),s&&s(n,t)}},m,{children:u}),h))})),0),(0,o.createVNode)(1,"div","Tabs__content",h||null,0)]})))},l}(o.Component);t.Tabs=l;var d=function(e){return null};t.Tab=d,d.defaultProps={__type__:"Tab"},l.Tab=d},function(e,t,n){"use strict";t.__esModule=!0,t.TitleBar=void 0;var o=n(0),r=n(9),a=n(21),i=n(15),c=n(38),l=n(89),d=function(e){switch(e){case c.UI_INTERACTIVE:return"good";case c.UI_UPDATE:return"average";case c.UI_DISABLED:default:return"bad"}},u=function(e){var t=e.className,n=e.title,c=e.status,u=e.fancy,s=e.onDragStart,p=e.onClose;return(0,o.createVNode)(1,"div",(0,r.classes)(["TitleBar",t]),[(0,o.createComponentVNode)(2,l.Icon,{className:"TitleBar__statusIcon",color:d(c),name:"eye"}),(0,o.createVNode)(1,"div","TitleBar__title",n===n.toLowerCase()?(0,a.toTitleCase)(n):n,0),(0,o.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return u&&s(e)}}),!!u&&(0,o.createVNode)(1,"div","TitleBar__close TitleBar__clickable",i.tridentVersion<=4?"x":"\xd7",0,{onclick:p})],0)};t.TitleBar=u,u.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.getRoute=void 0;var o=n(414),r=n(415),a=n(416),i=n(417),c=n(418),l=n(419),d=n(420),u=n(421),s=n(422),p=n(423),m=n(424),f=n(425),h=n(426),C=n(427),b=n(428),g=n(429),N=n(430),v=n(431),V=n(432),y=n(433),_=n(434),k=n(435),x=n(436),L=n(437),B=n(438),w=n(439),S=n(440),I=n(441),T=n(442),A=n(443),P=n(444),E=n(445),R=n(446),M=n(447),O=n(448),F=n(449),D=n(450),j=n(451),z=n(452),G=n(453),H=n(454),U=n(455),K=n(456),W=n(457),Y=n(458),q=n(459),$=n(460),Q=n(461),X=n(462),J=n(463),Z=n(464),ee=n(465),te=n(466),ne=n(467),oe=n(468),re=n(469),ae=n(470),ie=n(471),ce=n(472),le=n(473),de=n(474),ue=n(475),se=n(476),pe=n(477),me=n(478),fe=n(479),he=n(480),Ce=n(481),be=n(482),ge=n(483),Ne=n(484),ve=n(485),Ve=n(486),ye=n(487),_e=n(488),ke=n(489),xe=n(490),Le=n(491),Be=n(492),we=n(493),Se=n(494),Ie=n(495),Te=n(496),Ae=n(497),Pe=n(498),Ee=n(499),Re=n(500),Me=n(501),Oe=n(502),Fe=n(503),De=n(504),je=n(505),ze=n(506),Ge=n(507),He=n(508),Ue=n(509),Ke=n(510),We=n(511),Ye=n(512),qe=n(513),$e=n(514),Qe=n(515),Xe=n(516),Je=n(517),Ze=n(518),et=n(519),tt=n(520),nt=n(521),ot=n(522),rt=n(523),at=n(524),it=n(525),ct=n(526),lt=n(527),dt=n(528),ut=n(529),st=n(530),pt=n(531),mt=n(532),ft=n(533),ht=n(534),Ct=n(535),bt=n(536),gt=n(537),Nt=n(538),vt=n(539),Vt=n(540),yt=n(541),_t=n(542),kt=n(543),xt=n(544),Lt=n(545),Bt=n(546),wt=n(547),St={achievements:{component:function(){return o.Achievements},scrollable:!0},ai_airlock:{component:function(){return r.AiAirlock},scrollable:!1},airalarm:{component:function(){return a.AirAlarm},scrollable:!0},ai_restorer:{component:function(){return i.AiRestorer},scrollable:!0},airlock_electronics:{component:function(){return c.AirlockElectronics},scrollable:!1},apc:{component:function(){return l.Apc},scrollable:!1},atmos_alert:{component:function(){return d.AtmosAlertConsole},scrollable:!0},atmos_control:{component:function(){return u.AtmosControlConsole},scrollable:!0},atmos_filter:{component:function(){return s.AtmosFilter},scrollable:!1},atmos_mixer:{component:function(){return p.AtmosMixer},scrollable:!1},atmos_pump:{component:function(){return m.AtmosPump},scrollable:!1},bepis:{component:function(){return h.Bepis},scrollable:!1},bank_machine:{component:function(){return f.BankMachine},scrollable:!1},blackmarket_uplink:{component:function(){return C.BlackmarketUplink},scrollable:!0,theme:"hackerman"},borgopanel:{component:function(){return g.BorgPanel},scrollable:!0},brig_timer:{component:function(){return N.BrigTimer},scrollable:!1},bsa:{component:function(){return b.BluespaceArtillery},scrollable:!1},camera_console:{component:function(){return v.CameraConsole},wrapper:function(){return v.CameraConsoleWrapper},scrollable:!0},canister:{component:function(){return V.Canister},scrollable:!1},canvas:{component:function(){return y.Canvas},scrollable:!1},cargo:{component:function(){return _.Cargo},scrollable:!0},cargo_express:{component:function(){return _.CargoExpress},scrollable:!0},cargo_hold_terminal:{component:function(){return k.CargoHoldTerminal},scrollable:!0},cellular_emporium:{component:function(){return x.CellularEmporium},scrollable:!0},centcom_podlauncher:{component:function(){return L.CentcomPodLauncher},scrollable:!1},acclimator:{component:function(){return B.ChemAcclimator},scrollable:!1},chem_dispenser:{component:function(){return S.ChemDispenser},scrollable:!0},chemical_filter:{component:function(){return I.ChemFilter},scrollable:!0},chem_heater:{component:function(){return T.ChemHeater},scrollable:!0},chem_master:{component:function(){return A.ChemMaster},scrollable:!0},chem_press:{component:function(){return P.ChemPress},scrollable:!1},reaction_chamber:{component:function(){return E.ChemReactionChamber},scrollable:!0},chem_splitter:{component:function(){return R.ChemSplitter},scrollable:!1},chem_synthesizer:{component:function(){return w.ChemDebugSynthesizer},scrollable:!1},synthesizer:{component:function(){return M.ChemSynthesizer},scrollable:!1},cloner:{component:function(){return O.Cloner},scrollable:!1},codex_gigas:{component:function(){return F.CodexGigas},scrollable:!1},computer_fabricator:{component:function(){return D.ComputerFabricator},scrollable:!1},crayon:{component:function(){return j.Crayon},scrollable:!0},crew:{component:function(){return z.CrewConsole},scrollable:!0},cryo:{component:function(){return G.Cryo},scrollable:!1},decal_painter:{component:function(){return H.DecalPainter},scrollable:!1},disposal_unit:{component:function(){return U.DisposalUnit},scrollable:!1},dna_vault:{component:function(){return K.DnaVault},scrollable:!1},eightball:{component:function(){return W.EightBallVote},scrollable:!1},electropack:{component:function(){return Y.Electropack},scrollable:!1},emergency_shuttle_console:{component:function(){return q.EmergencyShuttleConsole},scrollable:!1},engraved_message:{component:function(){return $.EngravedMessage},scrollable:!1},faxmachine:{component:function(){return Q.FaxMachine},scrollable:!1},exosuit_control_console:{component:function(){return X.ExosuitControlConsole},scrollable:!0},gateway:{component:function(){return J.Gateway},scrollable:!0},gps:{component:function(){return Z.Gps},scrollable:!0},gravity_generator:{component:function(){return ee.GravityGenerator},scrollable:!1},gulag_console:{component:function(){return ne.GulagTeleporterConsole},scrollable:!1},gulag_item_reclaimer:{component:function(){return te.GulagItemReclaimer},scrollable:!0},holodeck:{component:function(){return oe.Holodeck},scrollable:!0},hypnochair:{component:function(){return re.HypnoChair},scrollable:!1},implantchair:{component:function(){return ae.ImplantChair},scrollable:!1},infrared_emitter:{component:function(){return ie.InfraredEmitter},scrollable:!1},intellicard:{component:function(){return ce.Intellicard},scrollable:!0},keycard_auth:{component:function(){return le.KeycardAuth},scrollable:!1},labor_claim_console:{component:function(){return de.LaborClaimConsole},scrollable:!1},language_menu:{component:function(){return ue.LanguageMenu},scrollable:!0},launchpad_console:{component:function(){return se.LaunchpadConsole},scrollable:!0},launchpad_remote:{component:function(){return se.LaunchpadRemote},scrollable:!1,theme:"syndicate"},mech_bay_power_console:{component:function(){return me.MechBayPowerConsole},scrollable:!1},medical_kiosk:{component:function(){return fe.MedicalKiosk},scrollable:!1},mining_vendor:{component:function(){return he.MiningVendor},scrollable:!0},mint:{component:function(){return Ce.Mint},scrollable:!1},malfunction_module_picker:{component:function(){return pe.MalfunctionModulePicker},scrollable:!0,theme:"malfunction"},mulebot:{component:function(){return be.Mule},scrollable:!1},nanite_chamber_control:{component:function(){return ge.NaniteChamberControl},scrollable:!0},nanite_cloud_control:{component:function(){return Ne.NaniteCloudControl},scrollable:!0},nanite_program_hub:{component:function(){return ve.NaniteProgramHub},scrollable:!0},nanite_programmer:{component:function(){return Ve.NaniteProgrammer},scrollable:!0},nanite_remote:{component:function(){return ye.NaniteRemote},scrollable:!0},notificationpanel:{component:function(){return _e.NotificationPreferences},scrollable:!0},ntnet_relay:{component:function(){return ke.NtnetRelay},scrollable:!1},ntos_ai_restorer:{component:function(){return i.AiRestorer},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_arcade:{component:function(){return xe.NtosArcade},wrapper:function(){return Fe.NtosWrapper},scrollable:!1,theme:"ntos"},ntos_card:{component:function(){return Le.NtosCard},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_configuration:{component:function(){return Be.NtosConfiguration},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_crew_manifest:{component:function(){return we.NtosCrewManifest},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_file_manager:{component:function(){return Se.NtosFileManager},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_job_manager:{component:function(){return Ie.NtosJobManager},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_main:{component:function(){return Te.NtosMain},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_net_chat:{component:function(){return Ae.NtosNetChat},wrapper:function(){return Fe.NtosWrapper},scrollable:!1,theme:"ntos"},ntos_net_dos:{component:function(){return Pe.NtosNetDos},wrapper:function(){return Fe.NtosWrapper},scrollable:!1,theme:"syndicate"},ntos_net_downloader:{component:function(){return Ee.NtosNetDownloader},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_net_monitor:{component:function(){return Re.NtosNetMonitor},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_power_monitor:{component:function(){return qe.PowerMonitor},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_revelation:{component:function(){return Me.NtosRevelation},wrapper:function(){return Fe.NtosWrapper},scrollable:!1,theme:"syndicate"},ntos_station_alert:{component:function(){return ft.StationAlertConsole},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},ntos_supermatter_monitor:{component:function(){return Oe.NtosSupermatterMonitor},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"ntos"},nuclear_bomb:{component:function(){return De.NuclearBomb},scrollable:!1,theme:"retro"},ore_redemption_machine:{component:function(){return Ge.OreRedemptionMachine},scrollable:!0},ore_box:{component:function(){return ze.OreBox},scrollable:!0},operating_computer:{component:function(){return je.OperatingComputer},scrollable:!0},pandemic:{component:function(){return He.Pandemic},scrollable:!0},particle_accelerator:{component:function(){return Ue.ParticleAccelerator},scrollable:!1},personal_crafting:{component:function(){return Ke.PersonalCrafting},scrollable:!0},portable_generator:{component:function(){return Ye.PortableGenerator},scrollable:!1},portable_pump:{component:function(){return We.PortablePump},scrollable:!1},portable_scrubber:{component:function(){return We.PortableScrubber},scrollable:!1},power_monitor:{component:function(){return qe.PowerMonitor},scrollable:!0},proximity_sensor:{component:function(){return $e.ProximitySensor},scrollable:!1},radio:{component:function(){return Qe.Radio},scrollable:!1},radioactive_microlaser:{component:function(){return Xe.RadioactiveMicrolaser},scrollable:!1,theme:"syndicate"},remote_robot_control:{component:function(){return Ze.RemoteRobotControl},scrollable:!0},robotics_control_console:{component:function(){return et.RoboticsControlConsole},scrollable:!0},roulette:{component:function(){return tt.Roulette},scrollable:!1,theme:"cardtable"},rpd:{component:function(){return Je.RapidPipeDispenser},scrollable:!0},sat_control:{component:function(){return nt.SatelliteControl},scrollable:!1},scanner_gate:{component:function(){return ot.ScannerGate},scrollable:!0},shuttle_manipulator:{component:function(){return rt.ShuttleManipulator},scrollable:!0},signaler:{component:function(){return at.Signaler},scrollable:!1},sleeper:{component:function(){return it.Sleeper},scrollable:!1},slime_swap_body:{component:function(){return ct.SlimeBodySwapper},scrollable:!0},smartvend:{component:function(){return lt.SmartVend},scrollable:!0},smes:{component:function(){return dt.Smes},scrollable:!1},smoke_machine:{component:function(){return ut.SmokeMachine},scrollable:!1},solar_control:{component:function(){return st.SolarControl},scrollable:!1},space_heater:{component:function(){return pt.SpaceHeater},scrollable:!1},spawners_menu:{component:function(){return mt.SpawnersMenu},scrollable:!0},station_alert:{component:function(){return ft.StationAlertConsole},scrollable:!0},suit_storage_unit:{component:function(){return ht.SuitStorageUnit},scrollable:!1},synd_contract:{component:function(){return Ct.SyndContractor},wrapper:function(){return Fe.NtosWrapper},scrollable:!0,theme:"syndicate"},tanks:{component:function(){return bt.Tank},scrollable:!1},tank_dispenser:{component:function(){return gt.TankDispenser},scrollable:!1},teleporter:{component:function(){return Nt.Teleporter},scrollable:!1},thermomachine:{component:function(){return vt.ThermoMachine},scrollable:!1},timer:{component:function(){return Vt.Timer},scrollable:!1},transfer_valve:{component:function(){return yt.TransferValve},scrollable:!1},turbine_computer:{component:function(){return _t.TurbineComputer},scrollable:!1},turbolift:{component:function(){return kt.TurboLift},scrollable:!0},uplink:{component:function(){return xt.Uplink},scrollable:!0,theme:"syndicate"},vault_controller:{component:function(){return Lt.VaultController},scrollable:!1},vending:{component:function(){return Bt.Vending},scrollable:!0},wires:{component:function(){return wt.Wires},scrollable:!1}};t.getRoute=function(e){return St[e.config&&e.config["interface"]]}},function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=t.Score=t.Achievement=void 0;var o=n(0),r=n(3),a=n(1),i=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",content:i?"Unlocked":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Achievement=i;var c=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",content:i>0?"Earned "+i+" times":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Score=c;t.Achievements=function(e){var t=(0,r.useBackend)(e).data;return(0,o.createComponentVNode)(2,a.Tabs,{children:[t.categories.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e,children:(0,o.createComponentVNode)(2,a.Box,{as:"Table",children:t.achievements.filter((function(t){return t.category===e})).map((function(e){return e.score?(0,o.createComponentVNode)(2,c,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name):(0,o.createComponentVNode)(2,i,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name)}))})},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"High Scores",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:t.highscore.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e.name,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Score"})]}),Object.keys(e.scores).map((function(n,r){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:r+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:n===t.user_ckey&&"green",textAlign:"center",children:[0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",mr:2}),n,0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.scores[n]})]},n)}))]})},e.name)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(3),a=n(1);t.AiAirlock=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}},l=c[i.power.main]||c[0],d=c[i.power.backup]||c[0],u=c[i.shock]||c[0];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:l.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.main,content:"Disrupt",onClick:function(){return n("disrupt-main")}}),children:[i.power.main?"Online":"Offline"," ",i.wires.main_1&&i.wires.main_2?i.power.main_timeleft>0&&"["+i.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:d.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.backup,content:"Disrupt",onClick:function(){return n("disrupt-backup")}}),children:[i.power.backup?"Online":"Offline"," ",i.wires.backup_1&&i.wires.backup_2?i.power.backup_timeleft>0&&"["+i.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:u.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(i.wires.shock&&0===i.shock),content:"Restore",onClick:function(){return n("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Temporary",onClick:function(){return n("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Permanent",onClick:function(){return n("shock-perm")}})],4),children:[2===i.shock?"Safe":"Electrified"," ",(i.wires.shock?i.shock_timeleft>0&&"["+i.shock_timeleft+"s]":"[Wires have been cut!]")||-1===i.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.id_scanner?"power-off":"times",content:i.id_scanner?"Enabled":"Disabled",selected:i.id_scanner,disabled:!i.wires.id_scanner,onClick:function(){return n("idscan-toggle")}}),children:!i.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.emergency?"power-off":"times",content:i.emergency?"Enabled":"Disabled",selected:i.emergency,onClick:function(){return n("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.locked?"lock":"unlock",content:i.locked?"Lowered":"Raised",selected:i.locked,disabled:!i.wires.bolts,onClick:function(){return n("bolt-toggle")}}),children:!i.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.lights?"power-off":"times",content:i.lights?"Enabled":"Disabled",selected:i.lights,disabled:!i.wires.lights,onClick:function(){return n("light-toggle")}}),children:!i.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.safe?"power-off":"times",content:i.safe?"Enabled":"Disabled",selected:i.safe,disabled:!i.wires.safe,onClick:function(){return n("safe-toggle")}}),children:!i.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.speed?"power-off":"times",content:i.speed?"Enabled":"Disabled",selected:i.speed,disabled:!i.wires.timing,onClick:function(){return n("speed-toggle")}}),children:!i.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.opened?"sign-out-alt":"sign-in-alt",content:i.opened?"Open":"Closed",selected:i.opened,disabled:i.locked||i.welded,onClick:function(){return n("open-close")}}),children:!(!i.locked&&!i.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),i.locked?"bolted":"",i.locked&&i.welded?" and ":"",i.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(18),a=n(21),i=n(3),c=n(1),l=n(38),d=n(71);t.AirAlarm=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.data,c=a.locked&&!a.siliconUser;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.InterfaceLockNoticeBox,{siliconUser:a.siliconUser,locked:a.locked,onLockStatusChange:function(){return r("lock")}}),(0,o.createComponentVNode)(2,u,{state:t}),!c&&(0,o.createComponentVNode)(2,p,{state:t})],0)};var u=function(e){var t=(0,i.useBackend)(e).data,n=(t.environment_data||[]).filter((function(e){return e.value>=.01})),a={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},l=a[t.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[n.length>0&&(0,o.createFragment)([n.map((function(e){var t=a[e.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:l.color,children:l.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:t.atmos_alarm||t.fire_alarm?"bad":"good",children:(t.atmos_alarm?"Atmosphere Alarm":t.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!t.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return m}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return C}},modes:{title:"Operating Mode",component:function(){return g}},thresholds:{title:"Alarm Thresholds",component:function(){return N}}},p=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.config,l=s[a.screen]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:"home"!==a.screen&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("tgui:view",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,d,{state:t})})},m=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data,a=r.mode,l=r.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:l?"exclamation-triangle":"exclamation",color:l&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return n(l?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===a?"exclamation-triangle":"exclamation",color:3===a&&"danger",content:"Panic Siphon",onClick:function(){return n("mode",{mode:3===a?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return n("tgui:view",{screen:"vents"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return n("tgui:view",{screen:"scrubbers"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return n("tgui:view",{screen:"modes"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return n("tgui:view",{screen:"thresholds"})}})],4)},f=function(e){var t=e.state,n=(0,i.useBackend)(e).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},h=function(e){var t=e.id_tag,n=e.long_name,r=e.power,l=e.checks,d=e.excheck,u=e.incheck,s=e.direction,p=e.external,m=e.internal,f=e.extdefault,h=e.intdefault,C=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(n),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:r?"power-off":"times",selected:r,content:r?"On":"Off",onClick:function(){return C("power",{id_tag:t,val:Number(!r)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:"release"===s?"Pressurizing":"Releasing"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:u,onClick:function(){return C("incheck",{id_tag:t,val:l})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:d,onClick:function(){return C("excheck",{id_tag:t,val:l})}})]}),!!u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(m),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_internal_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:h,content:"Reset",onClick:function(){return C("reset_internal_pressure",{id_tag:t})}})]}),!!d&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(p),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_external_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:f,content:"Reset",onClick:function(){return C("reset_external_pressure",{id_tag:t})}})]})]})})},C=function(e){var t=e.state,n=(0,i.useBackend)(e).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,b,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},b=function(e){var t=e.long_name,n=e.power,r=e.scrubbing,d=e.id_tag,u=e.widenet,s=e.filter_types,p=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(t),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:n?"power-off":"times",content:n?"On":"Off",selected:n,onClick:function(){return p("power",{id_tag:d,val:Number(!n)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:r?"filter":"sign-in-alt",color:r||"danger",content:r?"Scrubbing":"Siphoning",onClick:function(){return p("scrubbing",{id_tag:d,val:Number(!r)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:u?"expand":"compress",selected:u,content:u?"Expanded range":"Normal range",onClick:function(){return p("widenet",{id_tag:d,val:Number(!u)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:r&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,l.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return p("toggle_filter",{id_tag:d,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})},g=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data.modes;return r&&0!==r.length?r.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return n("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},N=function(e){var t=(0,i.useBackend)(e),n=t.act,a=t.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,a.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return n("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorer=void 0;var o=n(0),r=n(3),a=n(1);t.AiRestorer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.AI_present,l=i.error,d=i.name,u=i.laws,s=i.isDead,p=i.restoring,m=i.health,f=i.ejectable;return(0,o.createFragment)([l&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l}),!!f&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:c?d:"----------",disabled:!c,onClick:function(){return n("PRG_eject")}}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:f?"System Status":d,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return n("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(3),a=n(1),i=n(165);t.AirlockElectronics=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.regions||[],d=c.accesses||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.oneAccess?"unlock":"lock",content:c.oneAccess?"One":"All",onClick:function(){return n("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&c.unres_direction?"check-square-o":"square-o",content:"North",selected:1&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&c.unres_direction?"check-square-o":"square-o",content:"East",selected:2&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&c.unres_direction?"check-square-o":"square-o",content:"South",selected:4&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&c.unres_direction?"check-square-o":"square-o",content:"West",selected:8&c.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,i.AccessList,{accesses:l,selectedList:d,accessMod:function(e){return n("set",{access:e})},grantAll:function(){return n("grant_all")},denyAll:function(){return n("clear_all")},grantDep:function(e){return n("grant_region",{region:e})},denyDep:function(e){return n("deny_region",{region:e})}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(0),r=n(3),a=n(1),i=n(71);t.Apc=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,d={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},u={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},s=d[c.externalPower]||d[0],p=d[c.chargingStatus]||d[0],m=c.powerChannels||[],f=u[c.malfStatus]||u[0],h=c.powerCellStatus/100;return c.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",c.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return n("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:c.siliconUser,locked:c.locked,onLockStatusChange:function(){return n("lock")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",content:c.isOperating?"On":"Off",selected:c.isOperating&&!l,disabled:l,onClick:function(){return n("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.chargeMode?"sync":"close",content:c.chargeMode?"Auto":"Off",disabled:l,onClick:function(){return n("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[m.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!l&&(1===e.status||3===e.status),disabled:l,onClick:function(){return n("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!l&&2===e.status,disabled:l,onClick:function(){return n("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!l&&0===e.status,disabled:l,onClick:function(){return n("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,c.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!c.siliconUser&&(0,o.createFragment)([!!c.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:f.icon,content:f.content,color:"bad",onClick:function(){return n(f.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return n("overload")}})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.coverLocked?"lock":"unlock",content:c.coverLocked?"Engaged":"Disengaged",disabled:l,onClick:function(){return n("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.emergencyLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.nightshiftLights?"Enabled":"Disabled",onClick:function(){return n("toggle_nightshift")}})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(3),a=n(1);t.AtmosAlertConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.priority||[],l=i.minor||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[c.length>0?c.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),l.length>0?l.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16)],0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(0),r=n(17),a=n(18),i=n(3),c=n(1);t.AtmosControlConsole=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,d=l.sensors||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:!!l.tank&&d[0].long_name,children:d.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,c.Section,{title:!l.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),l.tank&&(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"undo",content:"Reconnect",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.inputting?"power-off":"times",content:l.inputting?"Injecting":"Off",selected:l.inputting,onClick:function(){return n("input")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:l.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return n("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.outputting?"power-off":"times",content:l.outputting?"Open":"Closed",selected:l.outputting,onClick:function(){return n("output")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:parseFloat(l.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return n("pressure",{pressure:t})}})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(3),a=n(1),i=n(38);t.AtmosFilter=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.filter_types||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(c.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:c.rate===c.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,i.getGasLabel)(e.id,e.name),onClick:function(){return n("filter",{mode:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(3),a=n(1);t.AtmosMixer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.set_pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node2",{concentration:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(3),a=n(1);t.AtmosPump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),i.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.rate===i.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(0),r=n(3),a=n(1);t.BankMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.current_balance,l=i.siphoning,d=i.station_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:d+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"times":"sync",content:l?"Stop Siphoning":"Siphon Credits",selected:l,onClick:function(){return n(l?"halt":"siphon")}}),children:c+" cr"})})}),(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Authorized personnel only"})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(0),r=(n(21),n(15)),a=n(1);t.Bepis=function(e){var t=e.state,n=t.config,i=t.data,c=n.ref,l=i.amount;return(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.manual_power?"Off":"On",selected:!i.manual_power,onClick:function(){return(0,r.act)(c,"toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return(0,r.act)(c,"account_reset")}}),children:["Console is currently being operated by ",i.account_owner?i.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:i.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[i.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:i.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:i.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return(0,r.act)(c,"amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===i.manual_power||1===i.silicon_check,onClick:function(){return(0,r.act)(c,"deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",i.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",i.success_estimate,"%"]}),i.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"begin_experiment")},content:"Begin Testing"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BlackmarketUplink=void 0;var o=n(0),r=n(17),a=n(3),i=n(1);t.BlackmarketUplink=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.categories||[],d=c.delivery_methods||[],u=c.delivery_method_description||[],s=c.markets||{},p=c.items||{},m=!!c.buying&&(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Grid,{mt:20,children:(0,r.map)((function(e){var t=e.name;return"LTSRBT"!==t||c.ltsrbt_built?(0,o.createComponentVNode)(2,i.Grid.Column,{textAlign:"center",position:"relative",children:[(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"30px",children:t}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:u[t]})]}),(0,o.createComponentVNode)(2,i.Button,{content:e.price+" cr",mt:1,disabled:c.moneyc.money,onClick:function(){return n("select",{item:e.id})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.desc})})]},e.name)}))},e)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceArtillery=void 0;var o=n(0),r=n(3),a=n(1);t.BluespaceArtillery=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.notice,l=i.connected,d=i.unlocked,u=i.target;return(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",disabled:!d,onClick:function(){return n("recalibrate")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:u?"average":"bad",fontSize:"25px",children:u||"No Target Set"})}),(0,o.createComponentVNode)(2,a.Section,{children:d?(0,o.createComponentVNode)(2,a.Box,{style:{margin:"auto"},children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"FIRE",color:"bad",disabled:!u,fontSize:"30px",textAlign:"center",lineHeight:"46px",onClick:function(){return n("fire")}})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"bad",fontSize:"18px",children:"Bluespace artillery is currently locked."}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Awaiting authorization via keycard reader from at minimum two station heads."})],4)})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return n("build")}})})})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.BorgPanel=void 0;var o=n(0),r=n(3),a=n(1);t.BorgPanel=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.borg||{},l=i.cell||{},d=l.charge/l.maxcharge,u=i.channels||[],s=i.modules||[],p=i.upgrades||[],m=i.ais||[],f=i.laws||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return n("rename")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.emagged?"check-square-o":"square-o",content:"Emagged",selected:c.emagged,onClick:function(){return n("toggle_emagged")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.lockdown?"check-square-o":"square-o",content:"Locked Down",selected:c.lockdown,onClick:function(){return n("toggle_lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.scrambledcodes?"check-square-o":"square-o",content:"Scrambled Codes",selected:c.scrambledcodes,onClick:function(){return n("toggle_scrambledcodes")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[l.missing?(0,o.createVNode)(1,"span","color-bad","No cell installed",16):(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,content:l.charge+" / "+l.maxcharge}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("set_charge")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Change",onClick:function(){return n("change_cell")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Remove",color:"bad",onClick:function(){return n("remove_cell")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radio Channels",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_radio",{channel:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:c.active_module===e.type?"check-square-o":"square-o",content:e.name,selected:c.active_module===e.type,onClick:function(){return n("setmodule",{module:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_upgrade",{upgrade:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"check-square-o":"square-o",content:e.name,selected:e.connected,onClick:function(){return n("slavetoai",{slavetoai:e.ref})}},e.ref)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.lawupdate?"check-square-o":"square-o",content:"Lawsync",selected:c.lawupdate,onClick:function(){return n("toggle_lawupdate")}}),children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(3),a=n(1);t.BrigTimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:i.timing?"Stop":"Start",selected:i.timing,onClick:function(){return n(i.timing?"stop":"start")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:i.flash_charging?"Recharging":"Flash",disabled:i.flash_charging,onClick:function(){return n("flash")}})],4),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("time",{adjust:-600})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("time",{adjust:-100})}})," ",String(i.minutes).padStart(2,"0"),":",String(i.seconds).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("time",{adjust:100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("time",{adjust:600})}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Short",onClick:function(){return n("preset",{preset:"short"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Medium",onClick:function(){return n("preset",{preset:"medium"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Long",onClick:function(){return n("preset",{preset:"long"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CameraConsole=t.CameraConsoleWrapper=void 0;var o=n(0),r=n(17),a=n(58),i=n(9),c=n(3),l=n(1),d=n(88);var u=function(e,t){void 0===t&&(t="");var n=String(t).toLowerCase();return(0,a.flow)([(0,r.filter)((function(e){return null==e?void 0:e.name})),n&&(0,r.filter)((function(e){return e.name.toLowerCase().includes(n)})),(0,r.sortBy)((function(e){return e.name}))])(e)};t.CameraConsoleWrapper=function(e){var t=(0,c.useBackend)(e),n=t.act,r=t.data,a=t.config,i=e.children,d=r.mapRef,s=r.activeCamera,p=function(e,t){var n,o;if(!t)return[];var r=e.findIndex((function(e){return e.name===t.name}));return[null==(n=e[r-1])?void 0:n.name,null==(o=e[r+1])?void 0:o.name]}(u(r.cameras),s),m=p[0],f=p[1];return(0,o.createFragment)([(0,o.createVNode)(1,"div","CameraConsole__left",i,0),(0,o.createVNode)(1,"div","CameraConsole__right",[(0,o.createVNode)(1,"div","CameraConsole__toolbar",[(0,o.createVNode)(1,"b",null,"Camera: ",16),s&&s.name||"\u2014"],0),(0,o.createVNode)(1,"div","CameraConsole__toolbarRight",[(0,o.createComponentVNode)(2,l.Button,{icon:"chevron-left",disabled:!m,onClick:function(){return n("switch_camera",{name:m})}}),(0,o.createComponentVNode)(2,l.Button,{icon:"chevron-right",disabled:!f,onClick:function(){return n("switch_camera",{name:f})}})],4),(0,o.createComponentVNode)(2,l.ByondUi,{className:"CameraConsole__map",params:{id:d,parent:a.window,type:"map"}})],4)],4)};var s=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={searchTerm:""},t}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r.prototype.render=function(){var e=this,t=this.props,n=(0,c.useBackend)(t),r=n.act,a=n.data,s=this.state.searchTerm,p=a.activeCamera,m=u(a.cameras,s);return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Input,{fluid:!0,mb:1,placeholder:"Search for a camera",onInput:function(t,n){return e.setState({searchTerm:n})}}),(0,o.createComponentVNode)(2,l.Section,{children:m.map((function(e){return(0,o.createVNode)(1,"div",(0,i.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",p&&e.name===p.name&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){(0,d.refocusLayout)(),r("switch_camera",{name:e.name})}},e.name)}))})],4)},r}(o.Component);t.CameraConsole=s},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(0),r=n(3),a=n(1);t.Canister=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:["The regulator ",i.hasHoldingTank?"is":"is not"," connected to a tank."]}),(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Relabel",onClick:function(){return n("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.tankPressure})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:i.portConnected?"good":"average",content:i.portConnected?"Connected":"Not Connected"}),!!i.isPrototype&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.restricted?"lock":"unlock",color:"caution",content:i.restricted?"Restricted to Engineering":"Public",onClick:function(){return n("restricted")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Valve",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.releasePressure/(i.maxReleasePressure-i.minReleasePressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.releasePressure})," kPa"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:i.releasePressure===i.defaultReleasePressure,content:"Reset",onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:i.releasePressure<=i.minReleasePressure,content:"Min",onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("pressure",{pressure:"input"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:i.releasePressure>=i.maxReleasePressure,content:"Max",onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.valveOpen?"unlock":"lock",color:i.valveOpen?i.hasHoldingTank?"caution":"danger":null,content:i.valveOpen?"Open":"Closed",onClick:function(){return n("valve")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:i.valveOpen&&"danger",content:"Eject",onClick:function(){return n("eject")}}),children:[!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:i.holdingTank.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.holdingTank.tankPressure})," kPa"]})]}),!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Canvas=void 0;var o=n(0),r=n(3),a=n(1);n(9);var i=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).canvasRef=(0,o.createRef)(),n.onCVClick=t.onCanvasClick,n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.componentDidMount=function(){this.drawCanvas(this.props)},a.componentDidUpdate=function(){this.drawCanvas(this.props)},a.drawCanvas=function(e){var t=this.canvasRef.current.getContext("2d"),n=e.value,o=n.length;if(o){var r=n[0].length,a=Math.round(this.canvasRef.current.width/o),i=Math.round(this.canvasRef.current.height/r);t.save(),t.scale(a,i);for(var c=0;c=0||(r[n]=e[n]);return r}(t,["res","value","px_per_unit"]),c=n.length*a,l=0!==c?n[0].length*a:0;return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:c||300,height:l||300},i,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component);t.Canvas=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i,{value:c.grid,onCanvasClick:function(e,t){return n("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!c.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return n("finalize")},content:"Finalize"}),c.name]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=t.Cargo=void 0;var o=n(0),r=n(17),a=n(15),i=n(1),c=n(71);t.Cargo=function(e){var t=e.state,n=t.config,r=t.data,c=n.ref,s=r.supplies||{},p=r.requests||[],m=r.cart||[],f=m.reduce((function(e,t){return e+t.cost}),0),h=!r.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:[0===m.length&&"Cart is empty",1===m.length&&"1 item",m.length>=2&&m.length+" items"," ",f>0&&"("+f+" cr)"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return(0,a.act)(c,"clear")}})],4);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle",children:r.docked&&!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{content:r.location,onClick:function(){return(0,a.act)(c,"send")}})||r.location}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"CentCom Message",children:r.message}),r.loan&&!r.requestonly?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loan",children:r.loan_dispatched?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Loaned to Centcom"}):(0,o.createComponentVNode)(2,i.Button,{content:"Loan Shuttle",disabled:!(r.away&&r.docked),onClick:function(){return(0,a.act)(c,"loan")}})}):""]})}),(0,o.createComponentVNode)(2,i.Tabs,{mt:2,children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Catalog",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Catalog",buttons:(0,o.createFragment)([h,(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:r.self_paid?"check-square-o":"square-o",content:"Buy Privately",selected:r.self_paid,onClick:function(){return(0,a.act)(c,"toggleprivate")}})],0),children:(0,o.createComponentVNode)(2,l,{state:t,supplies:s})})}},"catalog"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Requests ("+p.length+")",icon:"envelope",highlight:p.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Active Requests",buttons:!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return(0,a.act)(c,"denyall")}}),children:(0,o.createComponentVNode)(2,d,{state:t,requests:p})})}},"requests"),!r.requestonly&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Checkout ("+m.length+")",icon:"shopping-cart",highlight:m.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Current Cart",buttons:h,children:(0,o.createComponentVNode)(2,u,{state:t,cart:m})})}},"cart")]})],4)};var l=function(e){var t=e.state,n=e.supplies,c=t.config,l=t.data,d=c.ref,u=function(e){var t=n[e].packs;return(0,o.createVNode)(1,"table","LabeledList",t.map((function(e){return(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[e.name,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.small_item&&(0,o.createFragment)([(0,o.createTextVNode)("Small Item")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.access&&(0,o.createFragment)([(0,o.createTextVNode)("Restrictions Apply")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:(l.self_paid?Math.round(1.1*e.cost):e.cost)+" credits",tooltip:e.desc,tooltipPosition:"left",onClick:function(){return(0,a.act)(d,"add",{id:e.id})}}),2)],4,null,e.name)})),0)};return(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e){var t=e.name;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:t,children:u},t)}))(n)})},d=function(e){var t=e.state,n=e.requests,r=t.config,c=t.data,l=r.ref;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"No Requests"}):(0,o.createVNode)(1,"table","LabeledList",n.map((function(e){return(0,o.createFragment)([(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[(0,o.createTextVNode)("#"),e.id,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__content",e.object,0),(0,o.createVNode)(1,"td","LabeledList__cell",[(0,o.createTextVNode)("By "),(0,o.createVNode)(1,"b",null,e.orderer,0)],4),(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createVNode)(1,"i",null,e.reason,0),2),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",[e.cost,(0,o.createTextVNode)(" credits"),(0,o.createTextVNode)(" "),!c.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"check",color:"good",onClick:function(){return(0,a.act)(l,"approve",{id:e.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"bad",onClick:function(){return(0,a.act)(l,"deny",{id:e.id})}})],4)],0)],4)],4,e.id)})),0)},u=function(e){var t=e.state,n=e.cart,r=t.config,c=t.data,l=r.ref;return(0,o.createFragment)([0===n.length&&"Nothing in cart",n.length>0&&(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{className:"candystripe",label:"#"+e.id,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,children:[!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)," ",e.cost," credits"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return(0,a.act)(l,"remove",{id:e.id})}})],4),children:e.object},e.id)}))}),n.length>0&&!c.requestonly&&(0,o.createComponentVNode)(2,i.Box,{mt:2,children:1===c.away&&1===c.docked&&(0,o.createComponentVNode)(2,i.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return(0,a.act)(l,"send")}})||(0,o.createComponentVNode)(2,i.Box,{opacity:.5,children:["Shuttle in ",c.location,"."]})})],0)};t.CargoExpress=function(e){var t=e.state,n=t.config,r=t.data,d=n.ref,u=r.supplies||{};return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{siliconUser:r.siliconUser,locked:r.locked,onLockStatusChange:function(){return(0,a.act)(d,"lock")},accessText:"a QM-level ID card"}),!r.locked&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Cargo Bay",selected:!r.usingBeacon,onClick:function(){return(0,a.act)(d,"LZCargo")}}),(0,o.createComponentVNode)(2,i.Button,{selected:r.usingBeacon,disabled:!r.hasBeacon,onClick:function(){return(0,a.act)(d,"LZBeacon")},children:[r.beaconzone," (",r.beaconName,")"]}),(0,o.createComponentVNode)(2,i.Button,{content:r.printMsg,disabled:!r.canBuyBeacon,onClick:function(){return(0,a.act)(d,"printBeacon")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Notice",children:r.message})]})}),(0,o.createComponentVNode)(2,l,{state:t,supplies:u})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(0),r=n(3),a=n(1);t.CargoHoldTerminal=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.points,l=i.pad,d=i.sending,u=i.status_report;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(c)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!l,onClick:function(){return n("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:d?"times":"arrow-up",content:d?"Stop Sending":"Send Goods",selected:d,disabled:!l,onClick:function(){return n(d?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l?"good":"bad",children:l?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:u})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(0),r=n(3),a=n(1);t.CellularEmporium=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.abilities;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!i.can_readapt,onClick:function(){return n("readapt")}}),children:i.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return n("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncher=void 0;var o=n(0),r=(n(21),n(3)),a=n(1);t.CentcomPodLauncher=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return n("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return n("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return n("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return n("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return n("bay5")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return n("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return n("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return n("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return n("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return n("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return n("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return n("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return n("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return n("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return n("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return n("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return n("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return n("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return n("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return n("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return n("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return n("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return n("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return n("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return n("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return n("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return n("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return n("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return n("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return n("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return n("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return n("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return n("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return n("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return n("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return n("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return n("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return n("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return n("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return n("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return n("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return n("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return n("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return n("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return n("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return n("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return n("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return n("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gondola",selected:13===i.styleChoice,tooltip:"This gondola can control when he wants to deliver his supplies\nif he has a smart enough mind, so offer up his body to ghosts\nfor maximum enjoyment. (Make sure to turn off bluespace and\nset a arbitrarily high open-time if you do!",onClick:function(){return n("styleGondola")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return n("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pody Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return n("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return n("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return n("clearBay")}})],4)})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(0),r=n(3),a=n(1);t.ChemAcclimator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[i.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return n("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:i.target_temperature,stepPixelSize:2,onChange:function(e,t){n("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.enabled?"On":"Off",selected:i.enabled,onClick:function(){return n("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.max_volume,unit:"u",width:"50px",minValue:i.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return n("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:i.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:i.emptying?"Emptying":"Filling"})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(0),r=n(3),a=n(1);t.ChemDebugSynthesizer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.amount,l=i.beakerCurrentVolume,d=i.beakerMaxVolume,u=i.isBeakerLoaded,s=i.beakerContents,p=void 0===s?[]:s;return(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",minValue:1,maxValue:d,step:1,stepPixelSize:2,onChange:function(e,t){return n("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return n("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return n("makecup")}}),children:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})," / "+d+" u"]}),p.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(18),a=n(21),i=n(3),c=n(1);t.ChemDispenser=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,d=!!l.recordingRecipe,u=Object.keys(l.recipes).map((function(e){return{name:e,contents:l.recipes[e]}})),s=l.beakerTransferAmounts||[],p=d&&Object.keys(l.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:l.recordingRecipe[e]}}))||l.beakerContents||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Status",buttons:d&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:l.energy/l.maxEnergy,content:(0,r.toFixed)(l.energy)+" units"})})})}),(0,o.createComponentVNode)(2,c.Section,{title:"Recipes",buttons:(0,o.createFragment)([!d&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return n("clear_recipes")}})}),!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"circle",disabled:!l.isBeakerLoaded,content:"Record",onClick:function(){return n("record_recipe")}}),d&&(0,o.createComponentVNode)(2,c.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return n("cancel_recording")}}),d&&(0,o.createComponentVNode)(2,c.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return n("save_recording")}})],0),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:[u.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.name,onClick:function(){return n("dispense_recipe",{recipe:e.name})}},e.name)})),0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Dispense",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",selected:e===l.amount,content:e,onClick:function(){return n("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:l.chemicals.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.title,onClick:function(){return n("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"minus",disabled:d,content:e,onClick:function(){return n("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l.isBeakerLoaded,onClick:function(){return n("eject")}}),children:(d?"Virtual beaker":l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:l.beakerCurrentVolume}),(0,o.createTextVNode)("/"),l.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,c.Box,{color:"label",children:l.isBeakerLoaded||d?0===p.length&&"Nothing":"N/A"}),p.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{color:"label",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(0),r=n(3),a=n(1);var i=function(e){var t=(0,r.useBackend)(e).act,n=e.title,i=e.list,c=e.reagentName,l=e.onReagentInput,d=n.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:n,minHeight:40,ml:.5,mr:.5,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return l(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return t("add",{which:d,name:c})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return t("remove",{which:d,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={leftReagentName:"",rightReagentName:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setLeftReagentName=function(e){this.setState({leftReagentName:e})},c.setRightReagentName=function(e){this.setState({rightReagentName:e})},c.render=function(){var e=this,t=this.props.state,n=t.data,r=n.left,c=void 0===r?[]:r,l=n.right,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Left",list:c,reagentName:this.state.leftReagentName,onReagentInput:function(t){return e.setLeftReagentName(t)},state:t})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Right",list:d,reagentName:this.state.rightReagentName,onReagentInput:function(t){return e.setRightReagentName(t)},state:t})})]})},r}(o.Component);t.ChemFilter=c},function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(0),r=n(18),a=n(3),i=n(1),c=n(121);t.ChemHeater=function(e){var t=(0,a.useBackend)(e),n=t.act,l=t.data,d=l.targetTemp,u=l.isActive,s=l.isBeakerLoaded,p=l.currentTemp,m=l.beakerCurrentVolume,f=l.beakerMaxVolume,h=l.beakerContents,C=void 0===h?[]:h;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.NumberInput,{width:"65px",unit:"K",step:2,stepPixelSize:1,value:(0,r.round)(d),minValue:0,maxValue:1e3,onDrag:function(e,t){return n("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,i.Box,{width:"60px",textAlign:"right",children:s&&(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:!!s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:2,children:[m," / ",f," units"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})],4),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:s,beakerContents:C})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(15),a=n(1);t.ChemMaster=function(e){var t=e.state,n=t.config,l=t.data,s=n.ref,p=l.screen,m=l.beakerContents,f=void 0===m?[]:m,h=l.bufferContents,C=void 0===h?[]:h,b=l.beakerCurrentVolume,g=l.beakerMaxVolume,N=l.isBeakerLoaded,v=l.isPillBottleLoaded,V=l.pillBottleCurrentAmount,y=l.pillBottleMaxAmount;return"analyze"===p?(0,o.createComponentVNode)(2,u,{state:t}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:b,initial:0})," / "+g+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(s,"eject")}})],4),children:[!N&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!N&&0===f.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,i,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:l.mode?"good":"bad",icon:l.mode?"exchange-alt":"times",content:l.mode?"Transfer":"Destroy",onClick:function(){return(0,r.act)(s,"toggleMode")}})],4),children:[0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,i,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,d,{state:t})}),!!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[V," / ",y," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(s,"ejectPillBottle")}})],4)})],0)};var i=a.Table,c=function(e){var t=e.state,n=e.chemical,i=e.transferTo,c=t.config.ref;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:n.volume,initial:0})," units of "+n.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return(0,r.act)(c,"analyze",{id:n.id})}})]})]},n.id)},l=function(e){var t=e.label,n=e.amountUnit,r=e.amount,i=e.onChangeAmount,c=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:14,unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:i}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:c}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",content:l})]})},d=function(e){var t,n;function i(){var t;return(t=e.call(this)||this).state={pillAmount:1,patchAmount:1,bottleAmount:1,packAmount:1},t}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=(this.state,this.props),n=t.state.config.ref,i=this.state,c=i.pillAmount,d=i.patchAmount,u=i.bottleAmount,s=i.packAmount,p=t.state.data,m=p.condi,f=p.chosenPillStyle,h=p.pillStyles,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===f,textAlign:"center",color:"transparent",onClick:function(){return(0,r.act)(n,"pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!m&&(0,o.createComponentVNode)(2,l,{label:"Pills",amount:c,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({pillAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"pill",amount:c,volume:"auto"})}}),!m&&(0,o.createComponentVNode)(2,l,{label:"Patches",amount:d,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(t,n){return e.setState({patchAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"patch",amount:d,volume:"auto"})}}),!m&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:u,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"bottle",amount:u,volume:"auto"})}}),!!m&&(0,o.createComponentVNode)(2,l,{label:"Packs",amount:s,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(t,n){return e.setState({packAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentPack",amount:s,volume:"auto"})}}),!!m&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:u,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentBottle",amount:u,volume:"auto"})}})]})},i}(o.Component),u=function(e){var t=e.state,n=t.config.ref,i=t.data.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return(0,r.act)(n,"goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:i.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:i.color,mr:1}),i.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:i.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[i.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:i.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:i.addicD})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(0),r=n(3),a=n(1);t.ChemPress=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.pill_size,l=i.pill_name,d=i.pill_style,u=i.pill_styles,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",width:"43px",minValue:5,maxValue:50,step:1,stepPixelSize:2,onChange:function(e,t){return n("change_pill_size",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Name",children:(0,o.createComponentVNode)(2,a.Input,{value:l,onChange:function(e,t){return n("change_pill_name",{name:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Style",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===d,textAlign:"center",color:"transparent",onClick:function(){return n("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(0),r=n(15),a=n(1),i=n(17),c=n(9);var l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).state={reagentName:"",reagentQuantity:1},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=l.prototype;return d.setReagentName=function(e){this.setState({reagentName:e})},d.setReagentQuantity=function(e){this.setState({reagentQuantity:e})},d.render=function(){var e=this,t=this.props.state,n=t.config,l=t.data,d=n.ref,u=l.emptying,s=l.reagents||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:u?"bad":"good",children:u?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(t,n){return e.setReagentName(n)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,c.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,a.NumberInput,{value:this.state.reagentQuantity,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(t,n){return e.setReagentQuantity(n)}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return(0,r.act)(d,"add",{chem:e.state.reagentName,amount:e.state.reagentQuantity})}})],4)],4),(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return(0,r.act)(d,"remove",{chem:t})}}),children:e},t)}))(s)]})})},l}(o.Component);t.ChemReactionChamber=l},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(0),r=n(18),a=n(3),i=n(1);t.ChemSplitter=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.straight,d=c.side,u=c.max_transfer;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:l,unit:"u",width:"55px",minValue:1,maxValue:u,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:d,unit:"u",width:"55px",minValue:1,maxValue:u,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"side",amount:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(0),r=n(18),a=n(3),i=n(1);t.ChemSynthesizer=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.amount,d=c.current_reagent,u=c.chemicals,s=void 0===u?[]:u,p=c.possible_amounts,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===l,onClick:function(){return n("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===d,onClick:function(){return n("select",{reagent:e.id})}},e.id)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cloner=void 0;var o=n(0),r=n(3),a=n(1),i=n(121);t.Cloner=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",minheight:"50px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})}),(0,o.createComponentVNode)(2,a.Section,{title:"Progess",minheight:"50px",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.progress,content:c.progress+"%",maxValue:100})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(0),r=n(3),a=n(1);t.CodexGigas=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[i.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==i.currentSection,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>2,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>4,onClick:function(){return n(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:["the Red","the Soulless","the Master","the Lord of all things","Jr."].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==i.currentSection,onClick:function(){return n(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:i.currentSection<4,onClick:function(){return n("search")}})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(21),n(3)),a=n(1);t.ComputerFabricator=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==l.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return c("clean_order")}}),(0,o.createComponentVNode)(2,i,{state:t})],0)};var i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return 0===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:51,children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"2"})}})})]})})]}):1===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:47,buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a slot that allows you to manipulate RFID cards.\nPlease note that this is not necessary to allow the device\nto read your identification, it is just necessary to\nmanipulate other cards.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return n("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return n("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:"26px",onClick:function(){return n("confirm_order")}})]}):2===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:47,children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?i.COLORS.department.security:e>=20&&e<30?i.COLORS.department.medbay:e>=30&&e<40?i.COLORS.department.science:e>=40&&e<50?i.COLORS.department.engineering:e>=50&&e<60?i.COLORS.department.cargo:e>=200&&e<230?i.COLORS.department.centcom:i.COLORS.department.other},d=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:4,color:i.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,u=i.sensors||[];return(0,o.createComponentVNode)(2,a.Section,{minHeight:90,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(f=e.ijob,f%10==0),color:l(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,r=e.toxdam,u=e.burndam,s=e.brutedam,p=t+r+u+s,m=Math.min(Math.max(Math.ceil(p/25),0),5),c[m])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,d,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,d,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,d,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,d,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return n("select_person",{name:e.name})}})})]},e.name);var t,r,u,s,p,m,f}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(3),a=n(1),i=n(121);t.Cryo=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",content:c.occupant.name?c.occupant.name:"No Occupant"}),!!c.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",content:c.occupant.stat,color:c.occupant.statstate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:c.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant.health/c.occupant.maxHealth,color:c.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",content:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",disabled:c.isOpen,onClick:function(){return n("power")},color:c.isOperating&&"green",children:c.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.isOpen?"unlock":"lock",onClick:function(){return n("door")},content:c.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:c.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return n("autoeject")},content:c.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(0),r=n(3),a=n(1);t.DecalPainter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.decal_list||[],l=i.color_list||[],d=i.dir_list||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===i.decal_style,onClick:function(){return n("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===i.decal_color,onClick:function(){return n("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===i.decal_direction,onClick:function(){return n("selected direction",{dirs:e.dirs})}},e.dirs)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(0),r=n(3),a=n(1);t.DisposalUnit=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return l.full_pressure?(t="good",n="Ready"):l.panel_open?(t="bad",n="Power Disabled"):l.pressure_charging?(t="average",n="Pressurizing"):(t="bad",n="Off"),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:t,children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.flush?"toggle-on":"toggle-off",disabled:l.isai||l.panel_open,content:l.flush?"Disengage":"Engage",onClick:function(){return c(l.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:l.isai,content:"Eject Contents",onClick:function(){return c("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:l.panel_open,selected:l.pressure_charging,onClick:function(){return c(l.pressure_charging?"pump-0":"pump-1")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(0),r=n(3),a=n(1);t.DnaVault=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.completed,l=i.used,d=i.choiceA,u=i.choiceB,s=i.dna,p=i.dna_max,m=i.plants,f=i.plants_max,h=i.animals,C=i.animals_max;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/p,content:s+" / "+p+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m/f,content:m+" / "+f+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/h,content:h+" / "+C+" Samples"})})]})}),!(!c||l)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:d,textAlign:"center",onClick:function(){return n("gene",{choice:d})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:u,textAlign:"center",onClick:function(){return n("gene",{choice:u})}})})]})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(0),r=n(3),a=n(1),i=n(21);t.EightBallVote=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.question,d=c.shaking,u=c.answers,s=void 0===u?[]:u;return d?(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',l,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,i.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return n("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(1),a=n(3),i=n(18);t.Electropack=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.power,d=c.code,u=c.frequency,s=c.minFrequency,p=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,r.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:s/10,maxValue:p/10,value:u/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:d,width:13,onDrag:function(e,t){return n("code",{code:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(0),r=n(1),a=n(3);t.EmergencyShuttleConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.timer_str,l=i.enabled,d=i.emagged,u=i.engines_started,s=i.authorizations_remaining,p=i.authorizations,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:c}),(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,r.Box,{inline:!0,color:u?"good":"average",ml:1,children:u?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!l,onClick:function(){return n("abort")}}),children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!l,onClick:function(){return n("authorize")}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!l,onClick:function(){return n("repeal")}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,color:d?"bad":"good",children:d?"ERROR":"Remaining: "+s}),children:[m.length>0?m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,r.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"}),m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)}))]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(0),r=n(21),a=n(3),i=n(1);t.EngravedMessage=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.admin_mode,d=c.creator_key,u=c.creator_name,s=c.has_liked,p=c.has_disliked,m=c.hidden_message,f=c.is_creator,h=c.num_likes,C=c.num_dislikes,b=c.realdate;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(m)}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-up",content:" "+h,disabled:f,selected:s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("like")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"circle",disabled:f,selected:!p&&!s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("neutral")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-down",content:" "+C,disabled:f,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("dislike")}})})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Created On",children:b})})}),(0,o.createComponentVNode)(2,i.Section),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return n("delete")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Ckey",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Character Name",children:u})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxMachine=void 0;var o=n(0),r=n(3),a=n(1),i=n(120);t.FaxMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Confirm Identity:",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return n("scan")},content:c.scan_name})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Authorize:",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.authenticated?"unlock":"lock",onClick:function(){return n("auth")},content:c.authenticated?"Log Out":"Log In"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fax Menu",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Network",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:c.network})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Currently Sending:",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return n("paper")},content:c.paper}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil",onClick:function(){return n("rename")},content:"Rename",disabled:!c.paperinserted})]}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Sending to:",children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return n("dept")},content:c.destination,disabled:!c.authenticated})}),(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Action:",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.cooldown&&c.respectcooldown?"clock-o":"envelope-o",onClick:function(){return n("send")},content:c.cooldown&&c.respectcooldown?"Realigning":"Send"})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(0),r=n(18),a=n(3),i=n(1);t.ExosuitControlConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data.mechs,l=void 0===c?[]:c;return l.length?l.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return n("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return n("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.Box,{color:e.integrity<=30?"bad":e.integrity<=70?"average":"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,i.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank?(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}}):"Not Equipped"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,i.Box,{color:e.cargo_space<=30?"good":e.cargo_space<=70?"average":"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)})):(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"No exosuits detected"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(0),r=n(3),a=n(1);t.Gateway=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.gateway_present,l=void 0!==c&&c,d=i.gateway_status,u=void 0!==d&&d,s=i.current_target,p=void 0===s?null:s,m=i.destinations,f=void 0===m?[]:m;if(!l)return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return n("linkup")},children:"Linkup"})]});if(p)return(0,o.createComponentVNode)(2,a.Section,{title:p.name,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return n("deactivate")},children:"Deactivate"})]});if(!f.length)return(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."});return(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),f.map((function(e){return e.availible?(0,o.createComponentVNode)(2,a.Section,{title:e.name,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return n("activate",{destination:e.ref})},children:"Activate"})},e.ref):(0,o.createComponentVNode)(2,a.Section,{textAlign:"center",title:e.name,children:[(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,content:"Calibrating..."})]},e.ref)}))],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(0),r=n(17),a=n(58),i=n(18),c=n(161),l=n(3),d=n(1),u=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e){var t=(0,l.useBackend)(e),n=t.act,s=t.data,p=s.currentArea,m=s.currentCoords,f=s.globalmode,h=s.power,C=s.tag,b=s.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,c.vecLength)((0,c.vecSubtract)(u(m),u(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(s.signals||[]);return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:h?"On":"Off",selected:h,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:C,onClick:function(){return n("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:b?"unlock":"lock",content:b?"AUTO":"MANUAL",color:!b&&"bad",onClick:function(){return n("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:f?"MAXIMUM":"LOCAL",selected:!f,onClick:function(){return n("globalmode")}})})]})}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[p," (",m,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,i.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(0),r=n(3),a=n(1);t.GravityGenerator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.breaker,l=i.charge_count,d=i.charging_state,u=i.on,s=i.operational;return s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,disabled:!s,onClick:function(){return n("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===d&&(u&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===d&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===d&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})}),s&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"WARNING - Radiation detected"}),s&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No radiation detected"})],0):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No data available"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(0),r=n(3),a=n(1);t.GulagItemReclaimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.mobs,l=void 0===c?[]:c;return l.length?(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!i.can_reclaim,onClick:function(){return n("release_items",{mobref:e.mob})}})})]},e.mob)}))})}):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No stored items"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(0),r=n(3),a=n(1);t.GulagTeleporterConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.teleporter,l=i.teleporter_lock,d=i.teleporter_state_open,u=i.teleporter_location,s=i.beacon,p=i.beacon_location,m=i.id,f=i.id_name,h=i.can_teleport,C=i.goal,b=void 0===C?0:C,g=i.prisoner,N=void 0===g?{}:g;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:d?"Open":"Closed",disabled:l,selected:d,onClick:function(){return n("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"unlock",content:l?"Locked":"Unlocked",selected:l,disabled:d,onClick:function(){return n("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:c?"good":"bad",buttons:!c&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_teleporter")}}),children:c?u:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:s?"good":"bad",buttons:!s&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_beacon")}}),children:s?p:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:m?f:"No ID",onClick:function(){return n("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:b,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return n("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:N.name?N.name:"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:N.crimstat?N.crimstat:"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!h,textAlign:"center",color:"bad",onClick:function(){return n("teleport")}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=n(3),a=n(1);t.Holodeck=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_toggle_safety,l=i.default_programs,d=void 0===l?[]:l,u=i.emag_programs,s=void 0===u?[]:u,p=i.emagged,m=i.program;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"unlock":"lock",content:"Safeties",color:"bad",disabled:!c,selected:!p,onClick:function(){return n("safety")}}),children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))}),!!p&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(0),r=n(3),a=n(1);t.HypnoChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:i.trigger,onChange:function(e,t){return n("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return n("interrogate")}}),1===i.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(0),r=n(3),a=n(1);t.ImplantChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.ready?i.special_name||"Implant":"Recharging",onClick:function(){return n("implant")}}),0===i.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[i.ready_implants,1===i.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(0),r=n(3),a=n(1);t.InfraredEmitter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.on,l=i.visible;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"eye":"eye-slash",content:l?"Visible":"Invisible",selected:l,onClick:function(){return n("visibility")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(0),r=n(3),a=n(1);t.Intellicard=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=d||u,l=i.name,d=i.isDead,u=i.isBraindead,s=i.health,p=i.wireless,m=i.radio,f=i.wiping,h=i.laws,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.Section,{title:l||"Empty Card",buttons:!!l&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:f?"Stop Wiping":"Wipe",disabled:d,onClick:function(){return n("wipe")}}),children:!!l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:c?"bad":"good",children:c?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return n("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:m,onClick:function(){return n("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(3),a=n(1);t.KeycardAuth=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===i.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===i.waiting&&(0,o.createFragment)([!!i.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return n("auth_swipe")},content:"Authorize"}),0===i.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return n("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return n("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return n("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(21),a=n(3),i=n(1);t.LaborClaimConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.can_go_home,d=c.id_points,u=c.ores,s=c.status_info,p=c.unclaimed_points;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,i.Button,{content:"Move shuttle",disabled:!l,onClick:function(){return n("move_shuttle")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Claim points",disabled:!p,onClick:function(){return n("claim_points")}}),children:p})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(0),r=n(3),a=n(1);t.LanguageMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.admin_mode,l=i.is_living,d=i.omnitongue,u=i.languages,s=void 0===u?[]:u,p=i.unknown_languages,m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return n("select_default",{language_name:e.name})}}),!!c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return n("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(d?"Enabled":"Disabled"),selected:d,onClick:function(){return n("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadRemote=t.LaunchpadControl=t.LaunchpadButtonPad=void 0;var o=n(0),r=n(3),a=n(1),i=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return t("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return t("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return t("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return t("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return t("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:-1})}})]})]})};t.LaunchpadButtonPad=i;var c=function(e){var t=e.topLevel,n=(0,r.useBackend)(e),c=n.act,l=n.data,d=l.x,u=l.y,s=l.pad_name,p=l.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:s,width:"170px",onChange:function(e,t){return c("rename",{name:t})}}),level:t?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return c("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i,{state:e.state})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return c("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return c("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return c("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return c("pull")}})})]})]})};t.LaunchpadControl=c;t.LaunchpadRemote=function(e){var t=(0,r.useBackend)(e).data,n=t.has_pad,i=t.pad_closed;return n?i?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"}):(0,o.createComponentVNode)(2,c,{topLevel:!0,state:e.state}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})};t.LaunchpadConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.launchpads,d=void 0===l?[]:l,u=i.selected_id;return d.length<=0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"}):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.Box,{style:{"border-right":"2px solid rgba(255, 255, 255, 0.1)"},minHeight:"190px",mr:1,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name,selected:u===e.id,color:"transparent",onClick:function(){return n("select_pad",{id:e.id})}},e.name)}))})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:u?(0,o.createComponentVNode)(2,c,{state:e.state}):(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(0),r=n(21),a=n(15),i=n(1);var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={hoveredItem:{},currentSearch:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setHoveredItem=function(e){this.setState({hoveredItem:e})},c.setSearchText=function(e){this.setState({currentSearch:e})},c.render=function(){var e=this,t=this.props.state,n=t.config,r=t.data,c=n.ref,d=r.compact_mode,u=r.processing_time,s=r.categories,p=void 0===s?[]:s,m=this.state,f=m.hoveredItem,h=m.currentSearch;return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:u>0?"good":"bad",children:[u," Processing Time"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:h,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"list":"info",content:d?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}})],4),children:h.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:p.flatMap((function(e){return e.items||[]})).filter((function(e){var t=h.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:f,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{ref:e.ref})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:p.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:d,items:r,hoveredItem:f,processing_time:u,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{ref:e.ref})}})}},n)}))})})},r}(o.Component);t.MalfunctionModulePicker=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.processing_time,c=e.compact,l=e.onBuy,d=e.onBuyMouseOver,u=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-sc.user.points,content:e.price+" points",onClick:function(){return(0,r.act)(l,"purchase",{ref:e.ref})}})})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(0),r=n(3),a=n(1);t.Mint=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.inserted_materials||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.processing?"times":"power-off",content:i.processing?"Stop":"Start",selected:i.processing,onClick:function(){return n(i.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.chosen_material===e.material?"check-square":"square",selected:i.chosen_material===e.material,onClick:function(){return n("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",i.produced_coins," coins this cycle."]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(0),r=n(3),a=n(1),i=n(71);t.Mule=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,d=c.siliconUser,u=c.on,s=c.cell,p=c.cellPercent,m=c.load,f=c.mode,h=c.modeStatus,C=c.haspai,b=c.autoReturn,g=c.autoPickup,N=c.reportDelivery,v=c.destination,V=c.home,y=c.id,_=c.destinations,k=void 0===_?[]:_;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:d,locked:l}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!l&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?p/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Grid,{mt:1,children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:f})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:m?"good":"average",children:m||"None"})})})]})]}),!l&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return n("unload")}}),!!C&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return n("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:y,onChange:function(e,t){return n("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v||"None",options:k,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return n("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return n("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:V,options:k,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return n("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Return",onClick:function(){return n("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:g,content:"Auto-Pickup",onClick:function(){return n("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:N,content:"Report Delivery",onClick:function(){return n("report")}})]})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControl=void 0;var o=n(0),r=n(3),a=n(1);t.NaniteChamberControl=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.status_msg,l=i.locked,d=i.occupant_name,u=i.has_nanites,s=i.nanite_volume,p=i.regen_rate,m=i.safety_threshold,f=i.cloud_id,h=i.scan_level;if(c)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:c});var C=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+d,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"lock-open",content:l?"Locked":"Unlocked",color:l?"bad":"default",onClick:function(){return n("toggle_lock")}}),children:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return n("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return n("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return n("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:C.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),h>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),h>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),h>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),h>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("nanite_injection")}})],4)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(0),r=n(3),a=n(1),i=function(e){var t=e.state.data,n=t.has_disk,r=t.has_program,i=t.disk;return n?r?(0,o.createComponentVNode)(2,c,{program:i}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var c=function(e){var t=e.program,n=t.name,r=t.desc,i=t.activated,c=t.use_rate,l=t.can_trigger,d=t.trigger_cost,u=t.trigger_cooldown,s=t.activation_code,p=t.deactivation_code,m=t.kill_code,f=t.trigger_code,h=t.timer_restart,C=t.timer_shutdown,b=t.timer_trigger,g=t.timer_trigger_delay,N=t.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:n,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:r}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:c}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:u})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:m}),!!l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:f})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[h," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[C," s"]}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[g," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:N.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=c;var l=function(e){var t=(0,r.useBackend)(e),n=t.act;return(t.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return n("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=l;var d=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.current_view,d=i.disk,u=i.has_program,s=i.cloud_backup,p=d&&d.can_rule||!1;if(!s)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var m=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+l,level:2,buttons:!!u&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return n("upload_program")}}),children:m.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,c,{program:e}),!!p&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return n("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_rule",{program_id:e.id,rule_id:t.id})}}),t.display],0,t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=d;t.NaniteCloudControl=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,u=n.data,s=u.has_disk,p=u.current_view,m=u.new_backup_id;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s,onClick:function(){return c("eject")}}),children:(0,o.createComponentVNode)(2,i,{state:t})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return c("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return c("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return c("create_backup")}})],0),children:u.current_view?(0,o.createComponentVNode)(2,d,{state:t}):(0,o.createComponentVNode)(2,l,{state:t})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(0),r=n(17),a=n(3),i=n(1);t.NaniteProgramHub=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.detail_view,d=c.disk,u=c.has_disk,s=c.has_program,p=c.programs,m=void 0===p?{}:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return n("clear")}})],4),children:u?s?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Program Name",children:d.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:d.desc})]}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"info":"list",content:l?"Detailed":"Compact",onClick:function(){return n("toggle_details")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Sync Research",onClick:function(){return n("refresh")}})],4),children:null!==m?(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var r=e||[],a=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:a,children:l?r.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!u,onClick:function(){return n("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!u,onClick:function(){return n("download",{program_id:e.id})}})},e.id)}))})},t)}))(m)}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No nanite programs are currently researched."})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(0),r=n(3),a=n(1),i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=c;var l=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.type,c={number:(0,o.createComponentVNode)(2,d,{act:t,extra_setting:n}),text:(0,o.createComponentVNode)(2,u,{act:t,extra_setting:n}),type:(0,o.createComponentVNode)(2,s,{act:t,extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{act:t,extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:c[i]})};t.NaniteExtraEntry=l;var d=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.min,l=n.max,d=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:i,width:"64px",minValue:c,maxValue:l,unit:d,onChange:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraNumber=d;var u=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:i,width:"200px",onInput:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraText=u;var s=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:i,width:"150px",options:c,onSelected:function(e){return t("set_extra_setting",{target_setting:r,value:e})}})};t.NaniteExtraType=s;var p=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.true_text,l=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:i?c:l,checked:i,onClick:function(){return t("set_extra_setting",{target_setting:r})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e){var t=(0,r.useBackend)(e),n=t.act,d=t.data,u=d.has_disk,s=d.has_program,p=d.name,m=d.desc,f=d.use_rate,h=d.can_trigger,C=d.trigger_cost,b=d.trigger_cooldown,g=d.activated,N=d.has_extra_settings,v=d.extra_settings,V=void 0===v?{}:v;return u?s?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:m}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:f}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:g?"power-off":"times",content:g?"Active":"Inactive",selected:g,color:"bad",bold:!0,onClick:function(){return n("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{state:e.state})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,c,{state:e.state})})]}),!!N&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){return(0,o.createComponentVNode)(2,l,{act:n,extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemote=void 0;var o=n(0),r=n(3),a=n(1);t.NaniteRemote=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.code,l=i.locked,d=i.mode,u=i.program_name,s=i.relay_code,p=i.comms,m=i.message,f=i.saved_settings,h=void 0===f?[]:f;return l?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return n("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,maxLength:14,width:"130px",onChange:function(e,t){return n("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return n("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"270px",onChange:function(e,t){return n("set_message",{value:t})}})}),"Relay"===d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:d===e,onClick:function(){return n("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:h.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return n("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return n("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(0),r=n(3),a=n(1);t.NotificationPreferences=function(e){var t=(0,r.useBackend)(e),n=t.act,i=(t.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return n("toggle_ignore",{key:e.key})}},e.key)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(0),r=n(3),a=n(1);t.NtnetRelay=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.enabled,l=i.dos_capacity,d=i.dos_overload,u=i.dos_crashed;return(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:c,content:c?"ENABLED":"DISABLED",onClick:function(){return n("toggle")}}),children:u?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return n("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,minValue:0,maxValue:l,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})," GQ"," / ",l," GQ"]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(3),a=n(1);t.NtosArcade=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[i.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[i.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===i.PauseState?"#1b3622":"#471915",children:i.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:26,textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:i.BossID})})]})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,a.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:i.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",i.TicketCount]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCard=void 0;var o=n(0),r=n(3),a=n(1),i=n(165),c=n(17);t.NtosCard=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data,d=l.authenticated,u=l.regions,s=void 0===u?[]:u,p=l.access_on_card,m=void 0===p?[]:p,f=l.jobs,h=void 0===f?{}:f,C=l.id_rank,b=l.id_owner,g=l.has_id,N=l.have_printer,v=l.have_id_slot,V=l.id_name;return v?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:g&&d?(0,o.createComponentVNode)(2,a.Input,{value:b,width:"250px",onInput:function(e,t){return n("PRG_edit",{name:t})}}):b||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!N||!g,onClick:function(){return n("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Log Out":"Log In",color:d?"bad":"good",onClick:function(){n(d?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:V,onClick:function(){return n("PRG_eject")}})}),!!g&&!!d&&(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Access",children:(0,o.createComponentVNode)(2,i.AccessList,{accesses:s,selectedList:m,accessMod:function(e){return n("PRG_access",{access_target:e})},grantAll:function(){return n("PRG_grantall")},denyAll:function(){return n("PRG_denyall")},grantDep:function(e){return n("PRG_grantregion",{region:e})},denyDep:function(e){return n("PRG_denyregion",{region:e})}})}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Jobs",children:(0,o.createComponentVNode)(2,a.Section,{title:C,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return n("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return n("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:(0,c.map)((function(e,t){var r=e||[];return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:t,children:r.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return n("PRG_assign",{assign_target:e.job})}},e.job)}))},t)}))(h)})]})})]})],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(3),a=n(1);t.NtosConfiguration=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.power_usage,l=i.battery_exists,d=i.battery,u=void 0===d?{}:d,s=i.disk_size,p=i.disk_used,m=i.hardware,f=void 0===m?[]:m;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",c,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!l&&"average",children:l?(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge,minValue:0,maxValue:u.max,ranges:{good:[u.max/2,Infinity],average:[u.max/4,u.max/2],bad:[-Infinity,u.max/4]},children:[u.charge," / ",u.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p,minValue:0,maxValue:s,color:"good",children:[p," GQ / ",s," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return n("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(0),r=n(3),a=n(1),i=n(17);t.NtosCrewManifest=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.have_printer,d=c.manifest,u=void 0===d?{}:d;return(0,o.createComponentVNode)(2,a.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!l,onClick:function(){return n("PRG_print")}}),children:(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,a.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(u)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=t.FileTable=void 0;var o=n(0),r=n(1),a=n(3),i=function(e){var t=e.files,n=void 0===t?[]:t,a=e.usbconnected,i=e.usbmode,c=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,r.Table,{children:[(0,o.createComponentVNode)(2,r.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,r.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,r.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!a&&(i?(0,o.createComponentVNode)(2,r.Button,{icon:"download",tooltip:"Download",onClick:function(){return c(e.name)}}):(0,o.createComponentVNode)(2,r.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return c(e.name)}}))],0)})]},e.name)}))]})};t.FileTable=i;t.NtosFileManager=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.usbconnected,d=c.files,u=void 0===d?[]:d,s=c.usbfiles,p=void 0===s?[]:s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,i,{files:u,usbconnected:l,onUpload:function(e){return n("PRG_copytousb",{name:e})},onDelete:function(e){return n("PRG_deletefile",{name:e})},onRename:function(e,t){return n("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return n("PRG_clone",{file:e})}})}),l&&(0,o.createComponentVNode)(2,r.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:p,usbconnected:l,onUpload:function(e){return n("PRG_copyfromusb",{name:e})},onDelete:function(e){return n("PRG_deletefile",{name:e})},onRename:function(e,t){return n("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return n("PRG_clone",{file:e})}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManager=void 0;var o=n(0),r=n(3),a=n(1);t.NtosJobManager=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.authed,l=i.cooldown,d=i.slots,u=void 0===d?[]:d,s=i.prioritized,p=void 0===s?[]:s;return c?(0,o.createComponentVNode)(2,a.Section,{children:[l>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",mt:10,children:["On Cooldown: ",l,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return n("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return n("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return n("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(3),a=n(1),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list"};t.NtosMain=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.programs,d=void 0===l?[]:l,u=c.has_light,s=c.light_on,p=c.comp_light_color;return(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:s,onClick:function(){return n("PC_toggle_light")},children:["Flashlight: ",s?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return n("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:p})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,lineHeight:"24px",color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return n("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:3,children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{lineHeight:"24px",color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return n("PC_killprogram",{name:e.name})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(3),a=n(1);(0,n(39).createLogger)("ntos chat");t.NtosNetChat=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_admin,l=i.adminmode,d=i.authed,u=i.username,s=i.active_channel,p=i.is_operator,m=i.all_channels,f=void 0===m?[]:m,h=i.clients,C=void 0===h?[]:h,b=i.messages,g=void 0===b?[]:b,N=null!==s,v=d||l;return(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return n("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===s,color:"transparent",onClick:function(){return n("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:u+"...",currentValue:u,onCommit:function(e,t){return n("PRG_changename",{new_name:t})}}),!!c&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(l?"ON":"OFF"),color:l?"bad":"good",onClick:function(){return n("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:N&&(v?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return n("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),N&&v&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return n("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return n("PRG_leavechannel")}})],4),!!p&&d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return n("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return n("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return n("PRG_setpassword",{new_password:t})}})],4)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDos=void 0;var o=n(0),r=n(1),a=n(3);(0,n(39).createLogger)("NetDos");t.NtosNetDos=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.relays,l=void 0===c?[]:c,d=i.focus,u=i.target,s=i.speed,p=i.overload,m=i.capacity,f=i.error;if(f)return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:f}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return n("PRG_reset")}})],4);var h=function(e){for(var t="",n=p/m;t.lengthn?t+="0":t+="1";return t};return u?(0,o.createComponentVNode)(2,r.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,r.Box,{children:["CURRENT SPEED: ",s," GQ/s"]}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)}),(0,o.createComponentVNode)(2,r.Box,{children:h(45)})]}):(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Target",children:l.map((function(e){return(0,o.createComponentVNode)(2,r.Button,{content:e.id,selected:d===e.id,onClick:function(){return n("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!d,mt:1,onClick:function(){return n("PRG_execute")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(3),a=n(1);t.NtosNetDownloader=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data,d=l.disk_size,u=l.disk_used,s=l.downloadable_programs,p=void 0===s?[]:s,m=l.error,f=l.hacked_programs,h=void 0===f?[]:f,C=l.hackedavailable;return(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:m}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return c("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:d,children:u+" GQ / "+d+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),h.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))]})],0)};var i=function(e){var t=e.program,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.disk_size,d=c.disk_used,u=c.downloadcompletion,s=c.downloading,p=c.downloadname,m=c.downloadsize,f=l-d;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:t.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[t.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:t.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:m,value:u})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:s||t.size>f,onClick:function(){return i("PRG_downloadfile",{filename:t.filename})}})})]}),"Compatible"!==t.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),t.size>f&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:t.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(1),a=n(3);t.NtosNetMonitor=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.ntnetrelays,l=i.ntnetstatus,d=i.config_softwaredownload,u=i.config_peertopeer,s=i.config_communication,p=i.config_systemcontrol,m=i.idsalarm,f=i.idsstatus,h=i.ntnetmaxlogs,C=i.maxlogs,b=i.minlogs,g=i.ntnetlogs,N=void 0===g?[]:g;return(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:l?"power-off":"times",content:l?"ENABLED":"DISABLED",selected:l,onClick:function(){return n("toggleWireless")}}),children:c?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:c})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:d?"power-off":"times",content:d?"ENABLED":"DISABLED",selected:d,onClick:function(){return n("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return n("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return n("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return n("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:f?"power-off":"times",content:f?"ENABLED":"DISABLED",selected:f,onClick:function(){return n("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return n("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:h,minValue:b,maxValue:C,width:"39px",onChange:function(e,t){return n("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return n("purgelogs")}}),children:N.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(1),a=n(3);t.NtosRevelation=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return n("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:i.armed?"ARMED":"DISARMED",color:i.armed?"bad":"average",onClick:function(){return n("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!i.armed})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(17),a=n(58),i=n(18),c=n(3),l=n(1),d=n(38),u=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e){var t=e.state,n=(0,c.useBackend)(e),p=n.act,m=n.data,f=m.active,h=m.SM_integrity,C=m.SM_power,b=m.SM_ambienttemp,g=m.SM_ambientpressure;if(!f)return(0,o.createComponentVNode)(2,s,{state:t});var N=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),v=Math.max.apply(Math,[1].concat(N.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:C,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,i.toFixed)(C)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:u(b),minValue:0,maxValue:u(1e4),ranges:{teal:[-Infinity,u(80)],good:[u(80),u(373)],average:[u(373),u(1e3)],bad:[u(1e3),Infinity]},children:(0,i.toFixed)(b)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:u(g),minValue:0,maxValue:u(5e4),ranges:{good:[u(1),u(300)],average:[-Infinity,u(1e3)],bad:[u(1e3),+Infinity]},children:(0,i.toFixed)(g)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return p("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.Box.Forced,{height:24*N.length+"px",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:N.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:v,children:(0,i.toFixed)(e.amount,2)+"%"})},e.name)}))})})})})]})};var s=function(e){var t=(0,c.useBackend)(e),n=t.act,r=t.data.supermatters,a=void 0===r?[]:r;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return n("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:a.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return n("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWrapper=void 0;var o=n(0),r=n(3),a=n(1),i=n(88);t.NtosWrapper=function(e){var t=e.children,n=(0,r.useBackend)(e),c=n.act,l=n.data,d=l.PC_batteryicon,u=l.PC_showbatteryicon,s=l.PC_batterypercent,p=l.PC_ntneticon,m=l.PC_apclinkicon,f=l.PC_stationtime,h=l.PC_programheaders,C=void 0===h?[]:h,b=l.PC_showexitprogram;return(0,o.createVNode)(1,"div","NtosWrapper",[(0,o.createVNode)(1,"div","NtosWrapper__header NtosHeader",[(0,o.createVNode)(1,"div","NtosHeader__left",[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:f}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:"NtOS"})],4),(0,o.createVNode)(1,"div","NtosHeader__right",[C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:e.icon})},e.icon)})),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:p&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:p})}),!!u&&d&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[d&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:d}),s&&s]}),m&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:m})}),!!b&&(0,o.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return c("PC_minimize")}}),!!b&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return c("PC_exit")}}),!b&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return c("PC_shutdown")}})],0)],4,{onMouseDown:function(){(0,i.refocusLayout)()}}),(0,o.createVNode)(1,"div","NtosWrapper__content",t,0)],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(9),a=n(3),i=n(1),c=function(e){var t=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Box,{width:"185px",children:(0,o.createComponentVNode)(2,i.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,mb:1,content:e,textAlign:"center",fontSize:"40px",lineHeight:"50px",width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return t("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e){var t=e.state,n=(0,a.useBackend)(e),r=n.act,l=n.data,d=(l.anchored,l.disk_present,l.status1),u=l.status2;return(0,o.createComponentVNode)(2,i.Box,{m:1,children:[(0,o.createComponentVNode)(2,i.Box,{mb:1,className:"NuclearBomb__displayBox",children:d}),(0,o.createComponentVNode)(2,i.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Box,{className:"NuclearBomb__displayBox",children:u})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",fontSize:"24px",lineHeight:"23px",textAlign:"center",width:"43px",ml:1,mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,i.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,c,{state:t})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,width:"129px",children:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:"32px",mb:1,className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:"32px",className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,i.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(3),a=n(1);t.OperatingComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.table,l=i.surgeries,d=void 0===l?[]:l,u=i.procedures,s=void 0===u?[]:u,p=i.patient,m=void 0===p?{}:p;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Patient State",children:[!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",level:2,children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]}):"No Patient Detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"Initiated Procedures",level:2,children:s.length?s.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!i.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)})):"No Active Procedures"})]})]},"state"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Surgery Procedures",children:(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return n("sync")}}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})},"procedures")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(0),r=n(21),a=n(15),i=n(1);t.OreBox=function(e){var t=e.state,n=t.config,c=t.data,l=n.ref,d=c.materials;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Empty",onClick:function(){return(0,a.act)(l,"removeall")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(0),r=n(21),a=n(3),i=n(1);t.OreRedemptionMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,l=r.unclaimedPoints,d=r.materials,u=r.alloys,s=r.diskDesigns,p=r.hasDisk;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),l,(0,o.createComponentVNode)(2,i.Button,{ml:2,content:"Claim",disabled:0===l,onClick:function(){return n("Claim")}})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return n("diskEject")}})}),(0,o.createComponentVNode)(2,i.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return n("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"save",content:"Insert design disk",onClick:function(){return n("diskInsert")}})}),(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.Table,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,i.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Smelt",{id:e.id,sheets:t})}},e.id)}))})})],4)};var c=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).state={amount:1},t}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.prototype.render=function(){var e=this,t=this.state.amount,n=this.props,a=n.material,c=n.onRelease,l=Math.floor(a.amount);return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(a.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:a.value&&a.value+" cr"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:[l," sheets"]})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:t,onChange:function(t,n){return e.setState({amount:n})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:l<1,content:"Release",onClick:function(){return c(t)}})]})]})},a}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(0),r=n(17),a=n(3),i=n(1),c=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.has_beaker,l=r.beaker_empty,d=r.has_blood,u=r.blood,s=!c||l;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:s,onClick:function(){return n("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",content:"Empty",disabled:s,onClick:function(){return n("empty_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!c,onClick:function(){return n("eject_beaker")}})],4),children:c?l?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Beaker is empty"}):d?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",children:u&&u.dna||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:u&&u.type||"Unknown"})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.is_ready;return(r.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,i.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,i.Input,{value:e.name,onChange:function(t,o){return n("rename_disease",{index:e.index,name:o})}}):e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:"Create culture bottle",disabled:!c,onClick:function(){return n("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,d,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=l;var d=function(e){var t=e.symptom,n=t.name,a=t.desc,c=t.stealth,l=t.resistance,d=t.stage_speed,u=t.transmission,s=t.level,p=t.neutered,m=(0,r.map)((function(e,t){return{desc:e,label:t}}))(t.threshold_desc||{});return(0,o.createComponentVNode)(2,i.Section,{title:n,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{size:2,children:a}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Level",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage Speed",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmission",children:u})]})})]}),m.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=d;var u=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.resistances||[];return(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:c.length>0?(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!r.is_ready,onClick:function(){return n("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=u;t.Pandemic=function(e){var t=(0,a.useBackend)(e).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),!!t.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{state:e.state}),(0,o.createComponentVNode)(2,u,{state:e.state})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(0),r=n(3),a=n(1);t.ParticleAccelerator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.assembled,l=i.power,d=i.strength;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Run Scan",onClick:function(){return n("scan")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:c?"good":"bad",children:c?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!c,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:!c,onClick:function(){return n("remove_strength")}})," ",String(d).padStart(1,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:!c,onClick:function(){return n("add_strength")}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(17),a=n(3),i=n(1),c=function(e){var t=e.craftables,n=void 0===t?[]:t,r=(0,a.useBackend)(e),c=r.act,l=r.data,d=l.craftability,u=void 0===d?{}:d,s=l.display_compact,p=l.display_craftable_only;return n.map((function(e){return p&&!u[e.ref]?null:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,className:"candystripe",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!u[e.ref],tooltip:e.tool_text&&"Tools needed: "+e.tool_text,tooltipPosition:"left",onClick:function(){return c("make",{recipe:e.ref})}}),children:e.req_text},e.name):(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!u[e.ref],onClick:function(){return c("make",{recipe:e.ref})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.req_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Required",children:e.req_text}),!!e.catalyst_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Catalyst",children:e.catalyst_text}),!!e.tool_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))};t.PersonalCrafting=function(e){var t=e.state,n=(0,a.useBackend)(e),l=n.act,d=n.data,u=d.busy,s=d.display_craftable_only,p=d.display_compact,m=(0,r.map)((function(e,t){return{category:t,subcategory:e,hasSubcats:"has_subcats"in e,firstSubcatName:Object.keys(e).find((function(e){return"has_subcats"!==e}))}}))(d.crafting_recipes||{}),f=!!u&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"40px",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Box,{mt:30,children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Crafting..."]})});return(0,o.createFragment)([f,(0,o.createComponentVNode)(2,i.Section,{title:"Personal Crafting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:p?"check-square-o":"square-o",content:"Compact",selected:p,onClick:function(){return l("toggle_compact")}}),(0,o.createComponentVNode)(2,i.Button,{icon:s?"check-square-o":"square-o",content:"Craftable Only",selected:s,onClick:function(){return l("toggle_recipes")}})],4),children:(0,o.createComponentVNode)(2,i.Tabs,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.category,onClick:function(){return l("set_category",{category:e.category,subcategory:e.firstSubcatName})},children:function(){return!e.hasSubcats&&(0,o.createComponentVNode)(2,c,{craftables:e.subcategory,state:t})||(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,n){if("has_subcats"!==n)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n,onClick:function(){return l("set_category",{subcategory:n})},children:function(){return(0,o.createComponentVNode)(2,c,{craftables:e,state:t})}})}))(e.subcategory)})}},e.category)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=t.PortablePump=t.PortableBasicInfo=void 0;var o=n(0),r=n(3),a=n(1),i=n(38),c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.connected,l=i.holding,d=i.on,u=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:c?"good":"average",children:c?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return n("eject")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)};t.PortableBasicInfo=c;t.PortablePump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.direction,d=(i.holding,i.target_pressure),u=i.default_pressure,s=i.min_pressure,p=i.max_pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-in-alt":"sign-out-alt",content:l?"In":"Out",selected:l,onClick:function(){return n("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"kPa",width:"75px",minValue:s,maxValue:p,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:d===s,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:d===u,onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:d===p,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})],4)};t.PortableScrubber=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data.filter_types||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return n("toggle_filter",{val:e.gas_id})}},e.id)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(0),r=n(3),a=n(1);t.PortableGenerator=function(e){var t,n=(0,r.useBackend)(e),i=n.act,c=n.data;return t=c.stack_percent>50?"good":c.stack_percent>15?"average":"bad",(0,o.createFragment)([!c.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!c.ready_to_boot,children:c.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:c.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t,children:c.sheets}),c.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:c.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:c.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):c.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:c.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:c.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:c.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!c.connected&&"bad",children:c.connected?c.power_available:"Unconnected"})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PowerMonitor=void 0;var o=n(0),r=n(17),a=n(58),i=n(18),c=n(9),l=n(1);var d=5e5,u=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={sortByField:null},t}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=this,t=this.props.state.data,n=t.history,c=this.state.sortByField,u=n.supply[n.supply.length-1]||0,m=n.demand[n.demand.length-1]||0,f=n.supply.map((function(e,t){return[t,e]})),h=n.demand.map((function(e,t){return[t,e]})),C=Math.max.apply(Math,[d].concat(n.supply,n.demand)),b=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===c&&(0,r.sortBy)((function(e){return e.name})),"charge"===c&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===c&&(0,r.sortBy)((function(e){return t=e.load,n=String(t.split(" ")[1]).toLowerCase(),-["w","kw","mw","gw"].indexOf(n);var t,n}),(function(e){return-parseFloat(e.load)}))])(t.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"200px",children:(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:u,minValue:0,maxValue:C,color:"teal",content:(0,i.toFixed)(u/1e3)+" kW"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:m,minValue:0,maxValue:C,color:"pink",content:(0,i.toFixed)(m/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:f,rangeX:[0,f.length-1],rangeY:[0,C],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:h,rangeX:[0,h.length-1],rangeY:[0,C],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,l.Section,{children:[(0,o.createComponentVNode)(2,l.Box,{mb:1,children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===c,content:"Name",onClick:function(){return e.setState({sortByField:"name"!==c&&"name"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===c,content:"Charge",onClick:function(){return e.setState({sortByField:"charge"!==c&&"charge"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===c,content:"Draw",onClick:function(){return e.setState({sortByField:"draw"!==c&&"draw"})}})]}),(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),b.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,s,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,p,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,p,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,p,{status:e.env}),2)],4,null,e.id)}))]})]})],4)},c}(o.Component);t.PowerMonitor=u;var s=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,l.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,i.toFixed)(n)+"%"})],4)};s.defaultHooks=c.pureComponentHooks;var p=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,l.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};p.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(0),r=n(3),a=n(1);t.ProximitySensor=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.minutes,l=i.seconds,d=i.timing,u=i.scanning,s=i.sensitivity;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Armed":"Not Armed",selected:u,onClick:function(){return n("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:u,onClick:function(){return n("sense",{range:-1})}})," ",String(s).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:u,onClick:function(){return n("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:d?"Stop":"Start",selected:d,disabled:u,onClick:function(){return n("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:u||d,onClick:function(){return n("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:u||d,onClick:function(){return n("input",{adjust:-1})}})," ",String(c).padStart(2,"0"),":",String(l).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:u||d,onClick:function(){return n("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:u||d,onClick:function(){return n("input",{adjust:30})}})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=n(17),a=n(18),i=n(3),c=n(1),l=n(38);t.Radio=function(e){var t=(0,i.useBackend)(e),n=t.act,d=t.data,u=d.freqlock,s=d.frequency,p=d.minFrequency,m=d.maxFrequency,f=d.listening,h=d.broadcasting,C=d.command,b=d.useCommand,g=d.subspace,N=d.subspaceSwitchable,v=l.RADIO_CHANNELS.find((function(e){return e.freq===s})),V=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(d.channels);return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[u&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(s/10,1)+" kHz"})||(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:p/10,maxValue:m/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return n("frequency",{adjust:t-s/10})}}),v&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:v.color,ml:2,children:["[",v.name,"]"]})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:f?"volume-up":"volume-mute",selected:f,onClick:function(){return n("listen")}}),(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:h?"microphone":"microphone-slash",selected:h,onClick:function(){return n("broadcast")}}),!!C&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:b,content:"High volume "+(b?"ON":"OFF"),onClick:function(){return n("command")}}),!!N&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return n("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channels",children:[0===V.length&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),V.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return n("channel",{channel:e.name})}})},e.name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(0),r=n(3),a=n(1);t.RadioactiveMicrolaser=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.irradiate,l=i.stealth,d=i.scanmode,u=i.intensity,s=i.wavelength,p=i.on_cooldown,m=i.cooldown;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:p?"average":"good",children:p?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,onClick:function(){return n("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"eye-slash":"eye",content:l?"On":"Off",disabled:!c,selected:l,onClick:function(){return n("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"mortar-pestle":"heartbeat",content:d?"Scan Reagents":"Scan Health",disabled:c&&l,onClick:function(){return n("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(u),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return n("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(s),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return n("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:m})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(0),r=n(9),a=n(3),i=n(1),c=["Atmospherics","Disposals","Transit Tubes"],l={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},d={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},u=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e){var t=(0,a.useBackend)(e),n=t.act,s=t.data,p=s.category,m=s.categories,f=void 0===m?[]:m,h=s.selected_color,C=s.piping_layer,b=s.mode,g=s.preview_rows.flatMap((function(e){return e.previews}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Category",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{selected:p===t,icon:l[e],color:"transparent",content:e,onClick:function(){return n("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Modes",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:b&e.bitmask,content:e.name,onClick:function(){return n("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,width:"64px",color:d[h],content:h}),Object.keys(d).map((function(e){return(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:d[e],onClick:function(){return n("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,i.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,i.Section,{children:[0===p&&(0,o.createComponentVNode)(2,i.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:e===C,content:"Layer "+e,onClick:function(){return n("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,i.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return n("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,i.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:l[e.cat_name],label:e.cat_name,children:function(){return e.recipes.map((function(t){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:t.selected,content:t.pipe_name,title:t.pipe_name,onClick:function(){return n("pipe_type",{pipe_type:t.pipe_index,category:e.cat_name})}},t.pipe_index)}))}},e.cat_name)}))})})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControl=void 0;var o=n(0),r=n(21),a=n(3),i=n(1);t.RemoteRobotControl=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data.robots,l=void 0===c?[]:c;return l.length?l.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"tools",content:"Interface",onClick:function(){return n("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"phone-alt",content:"Call",onClick:function(){return n("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"No robots detected"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(3),a=n(1);t.RoboticsControlConsole=function(e){var t=e.state,n=(0,r.useBackend)(e),l=(n.act,n.data),d=l.can_hack,u=l.cyborgs,s=void 0===u?[]:u,p=l.drones,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Cyborgs ("+s.length+")",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i,{state:t,cyborgs:s,can_hack:d})}},"cyborgs"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Drones ("+m.length+")",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,c,{state:t,drones:m})}},"drones")]})};var i=function(e){e.state;var t=e.cyborgs,n=e.can_hack,i=(0,r.useBackend)(e),c=i.act;i.data;return t.length?t.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!n&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return c("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return c("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No cyborg units detected within access parameters"})})},c=function(e){e.state;var t=e.drones,n=(0,r.useBackend)(e),i=n.act;n.data;return t.length?t.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return i("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No drone units detected within access parameters"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(0),r=n(9),a=n(3),i=n(1),c=n(39);n(15);(0,c.createLogger)("Roulette");var l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e){var t=e.number,n=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Button,{bold:!0,content:t,color:l(t),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:t})}})};t.RouletteNumberButton=d;var u=function(e){var t=e.state,n=(0,a.useBackend)(e).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{state:t,number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={customBet:500},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=c.prototype;return d.setCustomBet=function(e){this.setState({customBet:e})},d.render=function(){var e=this,t=(0,a.useBackend)(this.props),n=t.act,c=t.data,d=c.BetType;return d.startsWith("s")&&(d=d.substring(1,d.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(c.LastSpin)]),c.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[c.BetAmount," cr on ",d]}),(0,o.createComponentVNode)(2,i.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return n("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return n("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return n("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return n("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return n("ChangeBetAmount",{amount:e.state.customBet})}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,i.NumberInput,{value:this.state.customBet,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(t,n){return e.setCustomBet(n)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:c.HouseBalance?c.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:c.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return n("anchor")}}),2)],4)],4)},c}(o.Component);t.RouletteBetTable=s;t.Roulette=function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,u,{state:e.state}),(0,o.createComponentVNode)(2,s,{state:e.state})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(3),a=n(1),i=n(120);t.SatelliteControl=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.satellites||[];return(0,o.createFragment)([c.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.meteor_shield_coverage/c.meteor_shield_coverage_max,content:100*c.meteor_shield_coverage/c.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return n("toggle",{id:e.id})}},e.id)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(0),r=n(3),a=n(1),i=n(71),c=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],l=[{name:"Human",value:"human"},{name:"lizard",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],d=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e){var t=e.state,n=(0,r.useBackend)(e),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{locked:c.locked,onLockedStatusChange:function(){return a("toggle_lock")}}),!c.locked&&(0,o.createComponentVNode)(2,s,{state:t})],0)};var u={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return m}},Guns:{title:"Scanner Mode: Guns",component:function(){return f}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return h}},Disease:{title:"Scanner Mode: Disease",component:function(){return C}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return g}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return N}}},s=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data.scan_mode,l=u[c]||u.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==c&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return i("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d,{state:t})})},p=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return t("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return t("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return t("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return t("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return t("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return t("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return t("set_mode",{new_mode:"Nanites"})}})]})],4)},m=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},f=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},h=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v,{state:t})],4)},C=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,l=n.data,d=l.reverse,u=l.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return i("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},b=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,d=c.reverse,u=c.target_species,s=l.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",d?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return i("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},g=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,u=c.target_nutrition,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return i("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v,{state:t})],4)},N=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,d=c.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return i("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v,{state:t})],4)},v=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return n("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(0),r=n(17),a=n(3),i=n(1);t.ShuttleManipulator=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.shuttles||[],d=c.templates||{},u=c.selected||{},s=c.existing_shuttle||{};return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Status",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"JMP",onClick:function(){return n("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return n("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,i.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return n("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})}},"status"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Templates",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:(0,r.map)((function(e,t){var r=e.templates||[];return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.port_id,children:r.map((function(e){var t=e.shuttle_id===u.shuttle_id;return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return n("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))},t)}))(d)})})}},"templates"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Modification",children:(0,o.createComponentVNode)(2,i.Section,{children:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:u.name,children:(!!u.description||!!u.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!u.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:u.description}),!!u.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:u.admin_notes})]})}),s?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: "+s.name,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Jump To",onClick:function(){return n("jump_to",{type:"mobile",id:s.id})}}),children:[s.status,!!s.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),s.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Preview",onClick:function(){return n("preview",{shuttle_id:u.shuttle_id})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Load",color:"bad",onClick:function(){return n("load",{shuttle_id:u.shuttle_id})}})]})],0):"No shuttle selected"})},"modification")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(0),r=n(1),a=n(3),i=n(18);t.Signaler=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.code,d=c.frequency,u=c.minFrequency,s=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:u/10,maxValue:s/10,value:d/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:l,width:13,onDrag:function(e,t){return n("code",{code:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return n("signal")}})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(3),a=n(1);t.Sleeper=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.open,l=i.occupant,d=void 0===l?{}:l,u=i.occupied,s=i.cell,p=void 0===s?{}:s,m=(i.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:d.name?d.name:"No Occupant",minHeight:"210px",buttons:!!d.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:d.statstate,children:d.stat}),children:!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health,minValue:d.minHealth,maxValue:d.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d[e.type],minValue:0,maxValue:d.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:d.cloneLoss?"bad":"good",children:d.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:d.brainLoss?"bad":"good",children:d.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c?"door-open":"door-closed",content:c?"Open":"Closed",onClick:function(){return n("door")}}),children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!(u&&e.allowed&&p.charge>p.poweruse),width:"110px",onClick:function(){return n("inject",{chem:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"50px",children:!!p&&(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,content:p.charge/10+" units",minValue:0,maxValue:p.maxCharge})})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(0),r=n(3),a=n(1),i=function(e){var t=e.body,n=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t.htmlcolor,children:t.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:{owner:"You Are Here",stranger:"Occupied",available:"Swap"}[t.occupied],selected:"owner"===t.occupied,color:"stranger"===t.occupied&&"bad",onClick:function(){return n()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:{Dead:"bad",Unconscious:"average",Conscious:"good"}[t.status],children:t.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:t.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:t.area})]})})};t.BodyEntry=i;t.SlimeBodySwapper=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data.bodies,l=void 0===c?[]:c;return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i,{body:e,swapFunc:function(){return n("swap",{ref:e.ref})}},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(17),a=n(3),i=n(1);t.SmartVend=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:!!c.isdryer&&(0,o.createComponentVNode)(2,i.Button,{icon:c.drying?"stop":"tint",onClick:function(){return n("Dry")},children:c.drying?"Stop drying":"Dry"}),children:0===c.contents.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Unfortunately, this ",c.name," is empty."]})||(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"center",children:c.verb?c.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.Button,{content:"One",disabled:e.amount<1,onClick:function(){return n("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return n("Release",{name:e.name})}})]})]},t)}))(c.contents)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(3),a=n(1);t.Smes=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return t=l.capacityPercent>=100?"good":l.inputting?"average":"bad",n=l.outputting?"good":l.charge>0?"average":"bad",(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*l.capacityPercent,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.inputAttempt?"sync-alt":"times",selected:l.inputAttempt,onClick:function(){return c("tryinput")},children:l.inputAttempt?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:t,children:l.capacityPercent>=100?"Fully Charged":l.inputting?"Charging":"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.inputLevel/l.inputLevelMax,content:l.inputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Input",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.inputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.inputLevelMax/1e3,onChange:function(e,t){return c("input",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:l.inputAvailable})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.outputAttempt?"power-off":"times",selected:l.outputAttempt,onClick:function(){return c("tryoutput")},children:l.outputAttempt?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:n,children:l.outputting?"Sending":l.charge>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.outputLevel/l.outputLevelMax,content:l.outputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.outputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.outputLevelMax/1e3,onChange:function(e,t){return c("output",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:l.outputUsed})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(0),r=n(3),a=n(1);t.SmokeMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.TankContents,l=(i.isTankLoaded,i.TankCurrentVolume),d=i.TankMaxVolume,u=i.active,s=i.setting,p=(i.screen,i.maxSetting),m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/d,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:l||0})," / "+d]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:s===e,icon:"plus",content:3*e,disabled:m0?"good":"bad",children:m})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:l,content:c+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===p,onClick:function(){return n("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===p,onClick:function(){return n("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===p,disabled:!f,onClick:function(){return n("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===p||1===p)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:d,onDrag:function(e,t){return n("azimuth",{value:t})}}),1===p&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-s-.01,maxValue:s+.01,value:u,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return n("azimuth_rate",{value:t})}}),2===p&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[d+" \xb0"," (auto)"]})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(3),a=n(1);t.SpaceHeater=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!i.hasPowercell||!i.open,onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,disabled:!i.hasPowercell,onClick:function(){return n("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!i.hasPowercell&&"bad",children:i.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.powerLevel/100,content:i.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(i.targetTemp-i.currentTemp)>50?"bad":Math.abs(i.targetTemp-i.currentTemp)>20?"average":"good",children:[i.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:i.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.targetTemp),width:"65px",unit:"\xb0C",minValue:i.minTemp,maxValue:i.maxTemp,onChange:function(e,t){return n("target",{target:t})}})||i.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:i.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===i.mode,onClick:function(){return n("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===i.mode,onClick:function(){return n("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===i.mode,onClick:function(){return n("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(3),a=n(1);t.SpawnersMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.spawners||[];return(0,o.createComponentVNode)(2,a.Section,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return n("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return n("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsole=void 0;var o=n(0),r=n(3),a=n(1);t.StationAlertConsole=function(e){var t=(0,r.useBackend)(e).data.alarms||[],n=t.Fire||[],i=t.Atmosphere||[],c=t.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===n.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),n.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(3),a=n(1);t.SuitStorageUnit=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.locked,l=i.open,d=i.safeties,u=i.uv_active,s=i.occupied,p=i.suit,m=i.helmet,f=i.mask,h=i.storage;return(0,o.createFragment)([!(!s||!d)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.Button,{icon:c?"unlock":"lock",content:c?"Unlock":"Lock",onClick:function(){return n("lock")}}),!c&&(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-out-alt":"sign-in-alt",content:l?"Close":"Open",onClick:function(){return n("door")}})],0),children:c&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return n("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return n("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:f?"square":"square-o",content:f||"Empty",disabled:!f,onClick:function(){return n("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return n("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&d,textAlign:"center",onClick:function(){return n("uv")}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractor=t.FakeTerminal=void 0;var o=n(0),r=n(1),a=n(3);var i=function(e){var t,n;function a(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=a.prototype;return i.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},i.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},i.componentWillUnmount=function(){clearTimeout(this.timer)},i.render=function(){return(0,o.createComponentVNode)(2,r.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},a}(o.Component);t.FakeTerminal=i;t.SyndContractor=function(e){var t=(0,a.useBackend)(e),n=t.data,c=t.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],u=!!n.error&&(0,o.createComponentVNode)(2,r.Dimmer,{children:(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"red",minHeight:"150px",mt:30,ml:15,mr:15,children:(0,o.createComponentVNode)(2,r.Table,{m:1,children:(0,o.createComponentVNode)(2,r.Table.Row,{children:[(0,o.createComponentVNode)(2,r.Table.Cell,{collapsing:!0,fontSize:"100px",children:(0,o.createComponentVNode)(2,r.Icon,{name:"exclamation-triangle",mt:4,ml:2})}),(0,o.createComponentVNode)(2,r.Table.Cell,{verticalAlign:"top",textAlign:"center",children:[(0,o.createComponentVNode)(2,r.Box,{m:1,textAlign:"left",width:"100%",minHeight:"110px",children:n.error}),(0,o.createComponentVNode)(2,r.Button,{content:"Dismiss",onClick:function(){return c("PRG_clear_error")}})]})]})})})});return n.logged_in?n.logged_in&&n.first_load?(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,i,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return c("PRG_set_first_load_finished")}})}):n.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,i,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return c("PRG_toggle_info")}})],4):(0,o.createFragment)([u,(0,o.createComponentVNode)(2,l,{state:e.state})],0):(0,o.createComponentVNode)(2,r.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,r.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,r.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return c("PRG_login")}})}),!!n.error&&(0,o.createComponentVNode)(2,r.NoticeBox,{children:n.error})]})};var c=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,r.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,r.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return n("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,r.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"TC Availible",buttons:(0,o.createComponentVNode)(2,r.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return n("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,l=i.contractor_hub_items||[],d=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,r.Tabs,{children:[(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:"Contracts",children:(0,o.createComponentVNode)(2,r.Section,{title:"Availible Contracts",buttons:(0,o.createComponentVNode)(2,r.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return n("PRG_call_extraction")}}),children:d.map((function(e){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,r.Section,{title:e.target+" ("+e.target_rank+")",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,r.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return n("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,r.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,r.Box,{children:e.dropoff})]})]})},e.target)}))})}),(0,o.createComponentVNode)(2,r.Tabs.Tab,{label:"Uplink",children:(0,o.createComponentVNode)(2,r.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",a=-1!==e.limited;return(0,o.createComponentVNode)(2,r.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([a&&(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,r.Button,{content:"Purchase",disabled:i.contract_rep0?"good":"bad",children:[s," TC"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:C,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"list":"info",content:d?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}}),!!u&&(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return(0,a.act)(c,"lock")}})],0),children:C.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:m.flatMap((function(e){return e.items||[]})).filter((function(e){var t=C.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:h,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:m.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:d,items:r,hoveredItem:h,telecrystals:s,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}})}},n)}))})})},r}(o.Component);t.Uplink=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.telecrystals,c=e.compact,l=e.onBuy,d=e.onBuyMouseOver,u=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-sl.user.cash),content:t?"FREE":e.price+" cr",onClick:function(){return(0,r.act)(d,"vend",{ref:e.ref})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var o=n(0),r=n(3),a=n(1);t.Wires=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.wires||[],l=i.status||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.color,labelColor:e.color,color:e.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return n("cut",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Pulse",onClick:function(){return n("pulse",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return n("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)("("),e.wire,(0,o.createTextVNode)(")")],0)},e.color)}))})}),!!l.length&&(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],0)}}]); \ No newline at end of file diff --git a/tgui/packages/tgui/public/tgui.html b/tgui/packages/tgui/public/tgui.html index d31b1a8491a..63274129238 100644 --- a/tgui/packages/tgui/public/tgui.html +++ b/tgui/packages/tgui/public/tgui.html @@ -75,9 +75,6 @@
- -
-